C++处理数据

这部分主要讲C++中的数据类型及其变体 前面也没用这方面的笔记,刚好趁着C++再复习一次
我们申明变量 int age; age = 15;语句告诉程序正在存储整数,程序找到一块能够存储整数的内存,将内存单元标记为age,然后把5拷贝到这个内存单元。

整型

C++提供了好几种整型,可以根据程序的具体需求选择合适的整型。不同C++整型类型占用的内存也不一样,占用内存越大,整型数值的范围也就越大,整型还分为有符号和无符号,即是否可表示正负。基本类型分别是short、int、long和long long 且他们通过使用不同的位数存储值,满足

  • short至少位
  • int至少于short一样长
  • long至少与int一样长
  • lomg long至少为64位
    计算机的基本单位是字节 一个字节有8位 一位可以表示0和1,8位单元可以表示0-255或者-128到127 没有申明无符号型的话基本都是有符号类型的,那么我们该如何获取类型的限制信息 头文件climits中包含了关于整型限制的信息。
    INT_MAX为int的最大取值 CHAR_BIT为字节的位数。
#include<iostream>
#include<climits>
using namespace std;
int main()
{
	int n_int = INT_MAX;
	short n_short = SHRT_MAX;
	long n_long = LONG_MAX;
	long long n_llong = LLONG_MAX;
	//sizeof operator
	cout << "int is " << sizeof(n_int) << " bytes" << endl;
	cout << "short is " << sizeof(n_short) << " bytes" << endl;
	cout << "long is " << sizeof(n_long) << " bytes" << endl;
	cout << "long  long is " << sizeof(n_llong) << " bytes" << endl;
	cout << endl;
	cout << "Maximum values " << endl;
	cout << "int " << n_int << endl;
	cout << "short " << n_short << endl;
	cout << "long " << n_long << endl;
	cout << "long long " << n_llong << endl;
	cout << "Minimum values " << INT_MIN<<endl;
	cout << "Bits per byte = " << CHAR_BIT << endl;//字节的位数

}

关于预编译处理,我之前有笔记已经详细讲过,只是单纯的字符串替换
关于变量赋值C++有C语言没有的初始化语法 int x{16};
如何声明无符号数据类型 只需使用关键字unsigned 修改声明即可

#include<iostream>
#include<climits>
#define ZERO 0
using namespace std;
int main()
{
	short sam = SHRT_MAX;
	unsigned short sue = sam;
	cout << "sam = " << sam << " sue = " << sue << endl;
	sam = sam + 1;
	sue = sue + 1;
	cout << "sam = " << sam<< " sue = " << sue << endl;
	sam = ZERO;
	sue = ZERO;
	cout << "sam = " << sam << " sue = " << sue << endl;
	sam = sam - 1;
	sue = sue - 1;
	cout << "sam = " << sam << " sue = " << sue << endl;
}

如果超越了限制,其值将为范围另一端的取值。有迷惑的可以看看前面的位运算。

选择整型类型

int被设置为对目标计算机而言最为自然的长度,指的是计算机处理起来效率最高的长度,如果我们表示大于十六位的整数 最小大可以表示2^16(32767) 如果在32位系统可以用int表示 2147483647 ,这时候用int移植到16位系统时,就会无法正常工作,所以选择合适的数据类型是很重要的。以及包括整型数组使用short比int更加省内存,16位到32位系统数组内存并没有扩大。
C++可以以三种不同的计数方法,我们常见的157 123是以10为基数,C++使用前一俩位标识数字,如果第一位是1~9则基数为10如果第一位是0,第二位是1-7则,基数是8,如果前两位是0x或者0X,则基数是16。0XA65 = 5*16^0+6*16^1+A*16^2 = 2661
此外cout还提供了控制符dec hex和oct用来显示十进制 十六进制和八进制
比如

int h = 10;
cout<<hex
    <<"h = "<<h<<endl;

C++确定常量的类型

程序如何确认常量是按什么类型存储,后缀表明了数字常量的符号,如果是l表示long,u表示无符号整数。对于不带后缀的十进制数,,将使用几种类型中可以存储该值的最小类型来表示:int long ,long long。如果是十六进制或八进制整数,将使用int unsigned int long unsigned long long long 或者unsigned long long 。unsigned int 表示范围比int范围对于内存地址这类无符号要大

char类型

char转为存储字符(字母和数字)而设计的。存储数字对于计算机算不了什么,编程语言通过数值编码实现了对字母的存储,一个char是八位,他可以存储-128~127的范围,如果是无符号它可以存放0~255 很多系统支持的字符不超过128个,虽然一般被用来表示字符,但它比作比short更小的整型类型。
我们平时常见的是Ascii码以及Unicode字符集,即宽窄字符,这在后面mfc的时候我会详细介绍。

#include<iostream>
using namespace std;
int main()
{
	char ch = 'M';
	int i = ch;
	cout << "the Ascii code for " << ch << " is " << i << endl;
	cout << "ADD one to code" << endl;
	ch = ch + 1;
	i = ch;
	cout << "the Ascii code for " << ch << " is " << i << endl;
	cout.put(ch);
	cout.put('!');
}

cin和cout会根据变量类型转换输出和输入,但作为内存存储,它是以数值编码存储的
我们根据cout引出成员函数的概念,成员函数归类所有,定义了如何表示和控制数据。这个put方法就是类对象cout来输出字符,要通过对象使用成员函数,必须用句点将对象名和函数名称put连接起来。句点被称为成员运算符。
”表示字符常量,这样不管在什么系统下都表示是字符常量,不会因为编码不同造成错误,对于一些无法从键盘输入的字符,C++提供了转义序列

image.png

const限定符

前面我们用到了#define定义常量的方法,const可以更好地定义常量。
const int Months = 12;
常量被初始化,其值被固定了,编译器不准再修改该常量的值,因此const也叫限定符,常量的命名约定

  1. 首字母大写
  2. 整个大写
  3. 以k开头的命名
    以上不是通用约定,创建格式const type name = value;尽量在申明中初始化值

网站标题:CV鼻祖洋芋

原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c/186/

本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!

(0)
上一篇 6天前
下一篇 6天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注