如果您有以下代码:
cout << hex << 10;
输出为'a',表示十进制10转换为十六进制值。
但是,在下面的代码中......
int n;
cin >> hex >> n;
cout << n << endl;
当输入为12时,输出变为18.任何人都可以解释转换的细节吗?它是如何成为小数值的?
我对它成为一个int感兴趣。如果分解,那将是:
(( cin >> hex ) >> n);
这是对的吗?
答案 0 :(得分:8)
十六进制操纵器仅控制如何读取值 - 它始终使用相同的内部二进制表示来存储。变量无法“记住”以十六进制输入。
答案 1 :(得分:6)
十六进制中的“12”是十进制的“18”。当您将“12”放入十六进制cin
流时,内部值为十进制18。当您输出到默认十进制的流时,您会看到十进制值 - “18”。
答案 2 :(得分:6)
它读取0x12(十六进制值)并将其存储在n中,然后以十进制形式打印。变量只包含值,它们不包含有关基数的信息(实际上它们将所有内容存储在基数2中)。