有人能解释一下变量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 a = 1024L * 1024 * 1024 * i;
它会工作的.(区别在于第一个1024末尾的L.)