整型变量的分类
一、int整数类型
1.1 int常量、变量
int表示的是4个字节,32位的二进制整数,在内存中占据4个字节的空间。取值范围在-2^31~(2^31)-1
1.2 printf输出int值
%d:输出一个有符号的10进制整数;
%u:输出一个无符号的10进制整数;
注:待输出数是正数时,结果与其他结果相同。待输出数是负数时,%u会把负数的补码二进制符号位当成普通的数来计算输出。
1.3 printf输出八进制和十六进制
%x:输出一个有符号的十六进制整数,eg:ffff ffe8;
%X:输出一个有符号的十六进制整数,其进制变为大写eg:FFFF FFE8;
%o:输出一个有符号的八进制整数
二、short 短整型
short:表示短整数,在32位系统下是2个字节,16个bit。
三、长整型 long
在32位系统下,long是4个字节的,在64位系统下,不论是windows还是unix都是4个字节
long long不管在什么系统下都是64位的,也就是8个字节大小的整数。对于32位操作系统,CPU寄存器是32位,所以计算long long类型的数据,效率很低(故不常用)
signed:表示"有符号"类型。其取值范围在0000 0000-0111 1111,即(-127-127之间)
unsigned:表示"无符号"类型,不存在负数。其取值范围在0000 0000-1111 1111,即(0-255之间)。
eg:unsigned short f; //表示无符号的字符类型f。
四、整数溢出
计算一个整数的时候,最后结果超过该数据类型能够容纳的最大范围后,整数会溢出,溢出的结果是高位舍弃。
eg: unsigned short i = 0xffff; i = i + 1; printf("%d\n",i);其结果为 0。
注:当一个小的整数数据类型赋值给一个大的整型数据类型时,不用担心符号位的变化。而一个大的整型数据类型给小的数据类型赋值时要考虑溢出问题。