次の 2 行のコードは、同じ値を返しません。その理由は?
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
最後の質問:
これらの 2 行は、コンパイラによってどのように解釈されますか?
i = i+++i; // is it i + ++i or i++ + i?
i = i---i; // is it i - --i or i-- - i?