.net プログラムで奇妙な動作を目撃しています:
Console.WriteLine(Int64.MaxValue.ToString());
// displays 9223372036854775807, which is 2^63-1, as expected
Int64 a = 256*256*256*127; // ok
Int64 a = 256*256*256*128; // compile time error :
//"The operation overflows at compile time in checked mode"
// If i do this at runtime, I get some negative values, so the overflow indeed happens.
Int64.MaxValue は 64 ビットを使用していることを確認しているように見えますが、Int64 が Int32 のように動作するのはなぜですか?
関連する場合、私は 32 ビット OS を使用しており、ターゲット プラットフォームは「すべての CPU」に設定されています。