无法将INT_MIN的值分配给long long

The*_* do 5 c++ built-in-types

signed long long value = -2147483648;
    cout << ((signed long long)value);
Run Code Online (Sandbox Code Playgroud)

输出2147483648(没有减号),为什么?

Eri*_*rik 9

signed long long value = -2147483648;
Run Code Online (Sandbox Code Playgroud)

2147483648不能用32位有符号整数表示,所以它被转换为无符号,然后应用一元减号(它不会改变任何东西),然后将它分配给有符号的long long.使用-2147483648LL