有人能解释一下变量a溢出的原因吗?注意 b 比 a 大。
static void Main(string[] args)
{
int i = 2;
long a = 1024 * 1024 * 1024 * i;
long b = 12345678901234567;
System.Console.WriteLine("{0}", a);
System.Console.WriteLine("{0}", b);
System.Console.WriteLine("{0}", long.MaxValue);
}
-2147483648
12345678901234567
9223372036854775807
Press any key to continue . . .
谢谢!
最佳答案
RHS 是一个int 乘法,因为表达式的每个部分都是一个 int。仅仅因为它被分配给一个 long 并不意味着它是用 long 算术执行的。
将其更改为:
long a = 1024L * 1024 * 1024 * i;
它会起作用的。 (不同的是第一个1024末尾的L。)
关于c# - 奇怪的c#溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385966/