我在.NET程序目睹一個奇怪的現象:爲什麼我的.net Int64的行爲就像他們是Int32的?
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的行爲就好像他們的Int32的,雖然Int64.MaxValue似乎證實了他們正在使用64位?
如果是相關的,我使用的是32位操作系統,所以使用Int32
算術執行的整個操作的目標平臺設置爲「任何CPU」
蕩你喬恩斯基特!你打了我大約10秒! :) – 2009-05-06 13:32:16
我覺得很蠢:)謝謝! – Brann 2009-05-06 13:32:36
你不傻,剛開始時有點不直觀。當我預料到「double res = someInt/otherInt」做了一個浮點除法(它沒有)並且知道左手邊沒有關係的時候,我被咬了。 – 2009-05-06 13:37:22