整数默认是十进制,一个表示十进制的数字不需要任何特殊的格式。
1、二进制
二进制由 0 和 1 两个数字组成,书写时必须以0b或0B(不区分大小写)开头。
以下是合法的二进制:
int a = 0b101; // 换算成十进制为 5
int b = -0b110010; // 换算成十进制为 -50
int c = 0B100001; // 换算成十进制为 33
以下是非法的二进制:
int m = 101010; // 无前缀 0B,相当于十进制
int n = 0B410; // 4不是有效的二进制数字
注意,C++标准并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。
2、八进制
八进制由 0~7 八个数字组成,书写时必须以0开头(注意是数字 0,不是字母 o)。
以下是合法的八进制数:
int a = 015; // 换算成十进制为 13
int b = -0101; // 换算成十进制为 -65
int c = 0177777; // 换算成十进制为 65535
以下是非法的八进制:
int m = 256; // 无前缀 0,相当于十进制
int n = 03A2; // A不是有效的八进制数字
3、十六进制
十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,书写时必须以0x或0X(不区分大小写)开头。
以下是合法的十六进制:
int a = 0X2A; // 换算成十进制为 42
int b = -0XA0; // 换算成十进制为 -160
int c = 0xffff; // 换算成十进制为 65535
以下是非法的十六进制:
int m = 5A; // 没有前缀 0X,是一个无效数字
int n = 0X3H; // H不是有效的十六进制数字
在C++中,不要在十进制数前面加0,会被编译器当成八进制。