C++ 十进制 八进制 十六进制的转换和关系

在默认情况下,cout以十进制格式显示整数,而不管这些整数在程序中是如何书写的。如下面的程序所示:

#include<iostream>
using namespace std;
#include<climits>
int main()
{   
    int chest = 42;     //十进制
    int waist = 0x42;    //十六进制
    int inseam = 042;    //八进制

    cout << "默认情况下,cout 以十进制格式显示整数" << endl;
    cout << "chest = " << chest << " (42以十进制格式显示)" << endl;
    cout << "waist = " << waist << " (0x42以十进制格式显示)" << endl;
    cout << "inseam = " << inseam << " (042以十进制格式显示)" << endl;
    cin.get();
    return 0;
}  

程序运行结果:

  默认情况下,cout 以十进制格式显示整数

  chest = 42 (42以十进制格式显示)

  waist = 66 (0x42以十进制格式显示)

  inseam = 34 (042以十进制格式显示)

2. 如果要以十六进制或者八进制的格式显示数字,则可使用cout的一些特殊性质。在iostream中,它不仅提供了控制符endl,而且还提供了控制符dec,hex和oct,分别用于指示十进制,十六进制和八进制显示整数。如下程序所示:

#include<iostream>
using namespace std;
#include<climits>
int main()
{   
    int chest = 42;    
    int waist = 42;    
    int inseam = 42;    

    cout << "chest = " << chest << " (42以十进制格式显示)" << endl;
    cout << hex;
    cout << "waist = " << waist << " (0x42以十六进制格式显示)" << endl;
    cout << oct;
    cout << "inseam = " << inseam << " (042以八进制格式显示)" << endl;
    cin.get();
    return 0;
}  

运行结果:

  chest = 42 (42以十进制格式显示)

  waist = 2a (0x42以十六进制格式显示)

  inseam = 52 (042以八进制格式显示)