Tôi đang chứng kiến một hành vi kỳ lạ trong một chương trình .net:Tại sao Intnet của tôi hoạt động như 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.
Tại sao cư xử Int64 tôi như thể chúng là Int32, mặc dù Int64.MaxValue dường như để xác nhận họ đang sử dụng 64 bit?
Nếu nó có liên quan, tôi đang sử dụng một hệ điều hành 32 bit, và nền tảng mục tiêu được đặt thành "Bất kỳ CPU"
Đặng bạn Jon Skeet! Bạn đánh bại tôi khoảng 10 giây! :) –
Tôi cảm thấy ngu ngốc :) Cảm ơn! – Brann
Bạn không ngu ngốc, ban đầu nó hơi khó hiểu một chút. Lúc đó tôi đã bị cắn khi tôi mong đợi rằng "double res = someInt/otherInt" thực hiện một phân chia điểm trôi nổi (mà nó không) và biết rằng phía bên tay trái không quan trọng. –