C ++: Битшифинг без подписи

Я пытаюсь сохранить 2 неподписанных символа в один неподписанный шорт.
Итак, что я делаю, это сохраняю 1-й символ, затем сдвигаю бит ИЛИ со вторым символом.

Код:

unsigned char a = 8;
unsigned char b = 2;
unsigned short c = a;
c << 8;
c |= b;

Но у меня сначала проблема с битшифтом.
Запуск этого кода:

unsigned char a = 8;
unsigned short c = a;
c << 8;
cout << c;

Я ожидаю получить 2048.
Я даже проверил здесь: http://www.miniwebtool.com/bitwise-calculator/bit-shift/?data_type=10&число = 8&место = 8&Оператор = Shift + Left.
Но вместо этого я получаю 8. Что я делаю не так?

-1

Решение

c <<= 8;

не

c << 8;

Во втором случае значение c не изменяется. Я бы ожидал, что ваш компилятор предупредит вас об этом.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]