unsigned int i = 0x02081;
cout << std::hex << i;
使用VS2010编译时显示2081,但我认为它应显示0x02081。我是对的,如果是的话,如何解决这个问题呢?
答案 0 :(得分:14)
默认情况下,不打印基础:
cout << std::hex << std::showbase << i;
答案 1 :(得分:7)
当然,最简单的解决方案是:
cout << "0x" << std::hex << i;
前导零的数量可能因数量不同而无关紧要。您可以选择任何您喜欢的金额。
答案 2 :(得分:6)
我认为它应该显示0x02081。上午 我没错。
不,你不是。它将以十六进制显示值,即2081
。 0x
本身不是数字的一部分,它只是一个符号方便。前导零也不是数字的一部分。
如果你想要你所说的预期输出,你可以这样做:
cout << std::hex << std::showbase << std::setw(5) << std::setfill('0') << i;
答案 3 :(得分:0)
它应该将i
的值显示为十六进制数字 - 并且这样做。前缀0x
只是一些编程语言用来表示文字应该被视为十六进制的东西。
cout << "0x" << std::hex << i;
正如Let_Me_Be所指出的那样:"0x" << std::hex
如果要为十六进制/八进制/十进制自动打印0x / 0 /无,则可以用std::hex << std::showbase
替换。