C语言标准中,整数可以直接使用八进制、十进制、十六进制三种表示,二进制标准没有支持,但是部分编译器提供支持。
进制的表示
一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。
二进制:二进制数是由0和1组成的,表示时需要在前面加上0B或0b(不区分大小写)
如int a=0b1011 int a=0b10111
注意:标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。
下面是实际测试的结果:
- Visual C++ 6.0 不支持。
- Visual Studio 2015 支持,但是 Visual Studio 2010 不支持;可以认为,高版本的 Visual Studio 支持二进制数字,低版本的 Visual Studio 不支持。
- GCC 4.8.2 支持,但是 GCC 3.4.5 不支持;可以认为,高版本的 GCC 支持二进制数字,低版本的 GCC 不支持。
- LLVM/Clang 支持(内嵌于 Mac OS 下的 Xcode 中)。
八进制:八进制数是由0~7组成的,表示时需要在开头加上0;
如int a=017 int a=012345
十六进制:十六进制数是由0~9,字 母 A~F 或 a~f(不区分大小写)组成,表示时需要在开头加上0X或0x(不区分大小写)
如0X1ABF56 0x1254f