有人能解释一下变量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 . . .
Run Code Online (Sandbox Code Playgroud)
谢谢!
Jon*_*eet 26
RHS是一个int乘法,因为表达式的每个部分都是int.仅仅因为它被分配给长并不意味着它是用长算术执行的.
将其更改为:
long a = 1024L * 1024 * 1024 * i;
Run Code Online (Sandbox Code Playgroud)
它会工作的.(区别在于第一个1024末尾的L.)