位移数字输出错误的输出`std :: cout`

时间:2011-09-09 22:41:31

标签: c++ bit-shift

unsigned int command = 4;
cout << command;

command = (command << 1);
cout << command;

command = (command << 1);
cout << command;

输出:

4
8
10

为什么最后一行10的输出而不是16的输出?

2 个答案:

答案 0 :(得分:19)

在此代码运行之前,某处可能存在cout << hex。或者您不小心将cout设置为以十六进制格式化数字。如果你添加:

command = (command<<1);
cout << command;

它应该以十六进制模式打印出20

答案 1 :(得分:0)

1016的十六进制。

0x10 == 16

很抱歉,如果我说的那么明显。