私は、複数の式が右から左に評価されることを知っています。 例:C言語のprintf内の式の評価
int i = 0;
printf("%d %d %d", i, i++, i++); // Prints 2 1 0
しかし、それが評価されるようにそれぞれの式に来るとき、それは右から左へ、またはその逆からであれば、私は届きません。左から右への評価を考慮
int main()
{
int a = 1, b = 1, d = 1;
printf("%d", a + ++a); // Result = 4
}
は、上記のコードは、1 + 2 = 3
int main()
{
int a = 1, b = 1, d = 1;
printf("%d", ++a + a); // Result = 4
}
として評価されるべきであり、これは、評価すべき2 + 2 = 4
しかし、両方のよう答えが4の場合。
誰でもこれらの式の評価方法を説明できますか?
_私は、複数の式が右から左に評価されることを知っています。例:_ 'int i = 0; printf( "%d%d%d"、i、i ++、i ++); // Prints 2 1 0':**間違った**は未定義の動作です。 –
@AlterMannこの質問には2つの問題があります:関数の引数の評価の順序と、同じ式の同じ変数の操作の順序が間違っています。その複製は後者を説明するだけで、私はこれを再オープンします。 – Lundin
@ Lundinしたがって、あなたはそれを間違って再オープンしました。複製は実際に注文を説明します:http://stackoverflow.com/a/18260171/4082723、http://stackoverflow.com/a/949508/4082723 – 2501