题
有人能解释我在变量溢出的原因是什么?注意,b比更大。
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 a = 1024L * 1024 * 1024 * i;
和它会工作。 (所不同的是将L在第一1024的端部。)
不隶属于 StackOverflow