整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言用int关键字来定义整数变量(int 是integer 的简写)。
在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。
signed:有符号的,可以表示正数和负数。
unsigned:无符号的,只能表示正数,例如数组的下标、人的身高等。
short:短的,现在主流的64位操作系统下,整数占用内存4个字节,使用 4
个字节保存较小的整数绰绰有余,会空闲出两个字节来,这些字节就白白浪费掉了。在C语言被发明的早期,或者在单片机和嵌入式系统中,内存都是非常稀缺的资源,所有的程序都在尽可能节省内存。
long:长的,更长的整数。
一、二进制、八进制、十六进制整数的书写
一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。

1、二进制

二进制由 0 和1两个数字组成,使用时必须以0b或0B(不区分大小写)开头。
以下是合法的二进制:
int a=0b101;// 换算成十进制为 5int b=-0b110010;// 换算成十进制为 -50int c=0B100001;// 换算成十进制为 33
以下是非法的二进制:
int m=101010;// 无前缀 0B,相当于十进制int n=0B410;// 4不是有效的二进制数字
请注意,标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。

2、八进制

八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o)。
以下是合法的八进制数:
int a=015;// 换算成十进制为 13int b=-0101;// 换算成十进制为 -65int c=0177777;// 换算成十进制为 65535
以下是非法的八进制:
int m=256;// 无前缀 0,相当于十进制int n=03A2;// A不是有效的八进制数字

3、十六进制

十六进制由数字 0~9、字母 A~F 或a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头。
以下是合法的十六进制:
int a=0X2A;// 换算成十进制为 42int b=-0XA0;// 换算成十进制为 -160int c=0xffff;// 换算成十进制为 65535
以下是非法的十六进制:
int m=5A;// 没有前缀 0X,是一个无效数字int n=0X3H;// H不是有效的十六进制数字

4、需要注意的坑