Addition with preincrement losing 1
本问题已经有最佳答案,请猛点这里访问。
为什么添加测试结果是12而不是13?它应该是5+1+7=13,但断言失败
Expected: 13
But was: 12
1 2 3 4 5 6 7 8 9 10 11 12 13 | int method(int a) { return 7; } [Test] public void TestAddition() { int row = 5; row += method(++row); Assert.AreEqual(13, row,"Why is it twelve instead of 13?"); } |
因为你
1 | row += method(++row); |
等于
1 | row = row + method(++row); |
由于
1 2 3 | row = row + method(++row); ^ ^ 5 7 |
这就是为什么结果会是
1 | row += method(++row); |
是一样的
1 | row = row + method(++row); |
操作数从左到右进行计算,因此左操作数(
预期结果为12。