Ответ 1
Вопреки распространенному мнению, -2147483648 не буквально: С++ не поддерживает отрицательные значения литерала.
Это, по сути, постоянное выражение для оценки времени компиляции, состоящее из унарного отрицания литерала 2147483648.
В MSVC x64, который имеет 32 бит int
и long
s, 2147483648 слишком велик для любого из них, поэтому он не подходит к типу long long
, который вы наблюдаете.