C++中整型字面量的使用细节
整型字面值(常量)是显式地书写的常量,如212或1776。与C相同,C++能够以三种不同的计数方式来书写整数:基数为10、基数为8(老式UNIX版本)和基数为16(硬件黑客的最爱)。附录A介绍了这几种计数系统:这里将介绍C++表示法。C++使用前一(两)位来标识数字常量的基数。如果第一位为1~9,则基数为 10(十进制);因此 93 是以 10为基数的。如果第一位是 0,第二位为 1~7,则基数为8(八进制);因此 042的基数是8,它相当于十进制数 34。如果前两位为0x或 0X,则基数为16(十六进制);因此 0x42 为十六进制数,相当于十进制数 66。对于十六进制数,字符 a~f和 A~F 表示了十六进制位,对应于10~15。0xF为15,0xA5为165(10个16加5个1)。程序清单 3.3演示了这三种基数。
// hexoct1.cpp -- shows hex and octal literals
#include <iostream>
int main()
{using namespace std;int chest = 42; // decimal integer literalint waist = 0x42; // hexadecimal integer literalint inseam = 042; // octal integer literalcout << "Monsieur cuts a striking figure!\n";cout << "chest = " << chest << " (42 in decimal)\n";cout << "waist = " << waist << " (0x42 in hex)\n";cout << "inseam = " << inseam << " (042 in octal)\n";// cin.get();return 0;
}
在默认情况下,cout 以十进制格式显示整数,而不管这些整数在程序中是如何书写的,如下面的输出所示:
Monsieur cuts a striking figure!
chest =42(42 in decimal)
waist=66(0x42 in hex)
inseam=34(042 in octal)
记住,这些表示方法仅仅是为了表达上的方便。例如,如果CGA视频内存段为十六进制 B000,则不必在程序中使用之前将它转换为十进制数 45056,而只需使用0xB000即可。但是,不管把值书写为 10、012还是0xA,都将以相同的方式存储在计算机中–被存储为二进制数(以2为基数)。
对C++感兴趣的朋友点这里:C/C++课程