私の抜粋:MSVCが-2147483648のタイプとしてlong longを選択するのはなぜですか?
auto i = -2147483648;
int j = 3;
std::swap(i, j); // Compile error about mismatched types here.
コンパイラはリテラルi
がlong long
であると述べています。何故ですか? -2147483648はMSVC x64のint
に適合します。
コンパイラはMSVCで、ターゲットは64ビットです。
[浮動小数点型の最小32ビット整数(-2147483648)は正の数(2147483648.0)を与えます](http://stackoverflow.com/q/11536389/995714)、[なぜ0 <-0x80000000?]ですか( http://stackoverflow.com/q/34182672/995714)、[(-2147483648> 0)はC++でtrueを返しますか?](http://stackoverflow.com/q/14695118/995714) –
楽しみのために、コンパイラの 'INT_MIN'の定義です。 'INT'が32ビットであっても、正確にはINT_MINは(-2147483648)として定義されていません。 – MSalters
私は最後の質問の複製を閉じることを躊躇しています。歓迎の意見。 – MSalters