kirill_782
@kirill_782
Днем я Маринетт

Почему не работает сдвиг влево на переменное кол-во байт?

Имеется
uint32_t int1; 
uint_16 count; (из параметров ф-ии)

И вне зависимости от count верно
int1 == Int1 >> count;
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Твой код содержит Undefined Behavior.
In any case, if the value of the right operand is negative or is greater or equal to the number of bits in the promoted left operand, the behavior is undefined.

Не стоит допускать сдвига на полное число бит типа левого операнда.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Размерность типа int - 32 бита, mask = 32 вы просто все биты сдвигаете и остается 0.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы