7
Ai đó có thể giải thích cho tôi nguyên nhân tràn trong biến a? Lưu ý rằng b lớn hơn a.Lỗi tràn C# lạ
static void Main(string[] args)
{
int i = 2;
long a = 1024 * 1024 * 1024 * i;
long b = 123456789;
System.Console.WriteLine("{0}", a);
System.Console.WriteLine("{0}", b);
System.Console.WriteLine("{0}", long.MaxValue);
}
-2147483648
123456789
9223372036854775807
Press any key to continue . . .
Cảm ơn!
Có lẽ thời gian chạy có thể linh hoạt hơn và tự động "mở rộng" tính toán nếu nó thấy biểu thức đó sẽ được lưu trữ trong thời gian dài? –
@Petar: Tôi nghĩ đó sẽ là một ý tưởng tồi. Nó sẽ làm cho ngôn ngữ phức tạp hơn nhiều. Thật dễ dàng để tránh vấn đề này và nó giữ ngôn ngữ đơn giản - có một vài nơi mà ý nghĩa của một biểu thức phụ thuộc vào ngữ cảnh của nó (ví dụ: biểu thức lambda) nhưng tôi không muốn thấy nhiều hơn. –