c++ primer 学习之路 (4) 3.1.6 整形字面值十进制,八进制,十六进制

3.1.6 整型字面值

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)

#include<iostream>
#include<climits>
using namespace std;
int main()
{
 int chest = 42;
 int waist = 0x42;
 int inseam = 042;
 cout << "chest =  " << chest << endl;
 cout << "waist =  " << waist << endl;
 cout << "inseam =  " << inseam << endl;
 system("pause");
 return 0;
}


cout提供了控制符dec、hex和oct,分别用于指示cout以十进制、十六进制和八进制格式显示整数。下面程序使用了hex和oct以上述三种格式显示十进制值42。默认格式为十进制,在修改格式之前,原来的格式将一直有效。

#include<iostream>
#include<climits>
using namespace std;
int main()
{
 int chest = 42;
 int waist = 42;
 int inseam = 42;
 cout << "chest =  " << chest << endl;
 cout << hex;
 cout << "waist =  " << waist << endl;
 cout << oct;
 cout << "inseam =  " << inseam << endl;
 system("pause");
 return 0;
}

诸如cout<<hex;等代码不会在屏幕上显示任何内容,而只是修改cout显示整数的方式。因此,控制符hex实际上是一条消息,告诉cout采取何种行为。另外,由于标识符hex位于名称空间std中,而程序使用了该名称空间,因此不能将hex用作变量名。然而,如果省略编译指令using,而使用std::cout、std::endl、std::hex和std::oct,则可以将hex用作变量名。

猜你喜欢

转载自blog.csdn.net/zhangfengfanglzb/article/details/80499704