Pull to refresh

Comments 6

Предлагаю кандидата к рассмотрению — швейцарский проект калькулятора DM-42 (репозиторий проекта с унаследованым кодом ядра калькулятора Free42) Сам калькулятор сделан на микроконтроллере STM32L476.

P.S. Сайт данного калькулятора swissmicros.com/dm42.php (форумное сообщество тоже есть)
Сдвиг отрицательного числа влево является неопределённым поведением.

В C++20, кстати, это уже не так.
В SpeedCrunch это когда-то работало, но не полностью, а после версии 0.12 вообще выпилили в deprecated, вместо того чтобы доделать нормально.
Результат инверсии нуля помещается в знаковый тип int, поэтому результатом будет отрицательное число, для которого потом выполняется сдвиг.

Но при этом видим
unsigned mask;

mask = (~0) << SIGNBIT;

Где же тут знаковый инт?
Или речь о том, что надо было сначала 0 привести к беззнаковому типу, а только потом выполнять инверсию?
0 это знаковый int. Следует писать:
mask = (~0u) << SIGNBIT;
Sign up to leave a comment.