Задать вопрос
kirill_782
@kirill_782
Днем я Маринетт

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

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

И вне зависимости от count верно
int1 == Int1 >> count;
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Skillbox
    Профессия Разработчик С++
 с нуля + ИИ
    7 месяцев
    Далее
  • Бруноям
    Разработчик на C++
    5 месяцев
    Далее
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Казань
от 75 000 до 120 000 ₽
Яндекс Москва
от 180 000 до 350 000 ₽
Альфа-Банк Москва
от 200 000 до 350 000 ₽