以下两行代码没有返回相同的值。有什么理由吗?
int i;
i = 1;
i = i + i++; //Returns 2, expecting 3
和
i = 1;
i = i++ + i; //Returns 3
从语义上讲,这应该是一样的a + b = b + a
吧?
与减少相同i
:
i = 1;
i = i - i--; //Returns 0, expecting 1
和
i = 1;
i = i-- - i; //Returns 1, expecting -1
更让我困惑的是后增量运算符的使用:
i = 1;
i = i + ++i; //Returns 3
和
i = 1;
i = ++i + i; //Returns 4, expecting 3
与递减运算符相同:
i = 1;
i = i - --i; //Returns 1
和
i = 1;
i = --i - i; //Returns 0, expecting -1
最后一个问题:
编译器如何解释这两行?
i = i+++i; // is it i + ++i or i++ + i?
i = i---i; // is it i - --i or i-- - i?