Как ответили другие, сдвиг влево отрицательного значения со знаком является неопределенным поведением в стандарте C ++. Различные компиляторы будут обрабатывать неопределенное поведение по-разному.
Например, использование компилятора g ++ (G CC) 9.2.0 для вашего кода:
g++ test.cpp
не выдаст предупреждение.
Но вы можете использовать другую опцию для компилятора, если вы включите все предупреждения и воспринимаете предупреждение как ошибку в g ++:
g++ -W -Wall -Werror test.cpp
Компилятор выдаст ошибку при компиляции кода.
Эти веб-сайты могут использовать разные компиляторы и опции, подчеркивающие их интерфейс и, таким образом, приводящие к разным результатам. Если вы хотите больше узнать о компиляторе, возьмите один и попробуйте использовать другие опции в автономном режиме.