Перед C ++ 20, когда левый операнд отрицательный, почему левая сдвига является неопределенным поведением, но в правой сдC++

Программы на C++. Форум разработчиков
Anonymous
Перед C ++ 20, когда левый операнд отрицательный, почему левая сдвига является неопределенным поведением, но в правой сд

Сообщение Anonymous »

Я понимаю, что стандарты до C ++ 20 не определяют представление подписанных целых чисел. Следовательно, когда оставляют отрицательное число, результат не определен, поскольку это зависит от базового представления. Однако, почему, когда дело доходит до правильного сдвига, поведение становится определяемой реализацией, а не неопределенным? Разве результат все еще не зависит от базового представления?

Подробнее здесь: https://stackoverflow.com/questions/795 ... defined-be

Вернуться в «C++»