订购事宜
以下代码中存在溢出
int x = int.MaxValue;
Console.WriteLine(x + x + 1L); //prints -1
而在以下代码中没有溢出
int x = int.MaxValue;
Console.WriteLine(x + 1L + x); //prints 4294967295
这是由于操作的从左到右排序。在第一个代码片段中,x + x
溢出,之后它变成了 long
。另一方面,x + 1L
变为 long
,然后将 x
添加到此值。