订购事宜

以下代码中存在溢出

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 添加到此值。