Число сдвига битов дает неправильный вывод `std :: cout` - PullRequest
0 голосов
/ 10 сентября 2011
unsigned int command = 4;
cout << command;

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

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

Выход:

4
8
10

Почему вывод последней строки 10, а не 16?

Ответы [ 2 ]

19 голосов
/ 10 сентября 2011

Вероятно, где-то до запуска этого кода будет cout << hex. Либо так, либо вы случайно установили cout для форматирования чисел в шестнадцатеричном формате. Если вы добавите:

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

Он должен распечатать 20 в шестнадцатеричном режиме.

0 голосов
/ 10 сентября 2011

10 является шестнадцатеричным для 16.

0x10 == 16

Извините, если я констатирую очевидное.

...