使用C ++ hex和cin

时间:2010-03-05 14:30:20

标签: c++ decimal hex

如果您有以下代码:

cout << hex << 10;

输出为'a',表示十进制10转换为十六进制值。

但是,在下面的代码中......

int n;
cin >> hex >> n;
cout << n << endl;

当输入为12时,输出变为18.任何人都可以解释转换的细节吗?它是如何成为小数值的?

我对它成为一个int感兴趣。如果分解,那将是:

(( cin >> hex ) >> n);

这是对的吗?

3 个答案:

答案 0 :(得分:8)

十六进制操纵器仅控制如何读取值 - 它始终使用相同的内部二进制表示来存储。变量无法“记住”以十六进制输入。

答案 1 :(得分:6)

十六进制中的“12”是十进制的“18”。当您将“12”放入十六进制cin流时,内部值为十进制18。当您输出到默认十进制的流时,您会看到十进制值 - “18”。

答案 2 :(得分:6)

它读取0x12(十六进制值)并将其存储在n中,然后以十进制形式打印。变量只包含值,它们不包含有关基数的信息(实际上它们将所有内容存储在基数2中)。