私の同級生は私に質問をしました:
この後のx、y、zの値は何ですか:
x=5;
y=8;
z=((x++)<(y++)?(x++):(y++));
よくわからないので、テストしたところ、答えは次のとおりです。
x=7,y=9,z=6
「x=7」と「y=9」の理由はわかりますが、「z=6」の理由は何ですか? この式は "x++" によって計算された値を返すべきではありませんか?
手伝ってくれてありがとう :)
私の同級生は私に質問をしました:
この後のx、y、zの値は何ですか:
x=5;
y=8;
z=((x++)<(y++)?(x++):(y++));
よくわからないので、テストしたところ、答えは次のとおりです。
x=7,y=9,z=6
「x=7」と「y=9」の理由はわかりますが、「z=6」の理由は何ですか? この式は "x++" によって計算された値を返すべきではありませんか?
手伝ってくれてありがとう :)
演算子の最初のオペランドと 2 番目または 3 番目の演算子の評価の間にシーケンス ポイントがあるため、最初の演算子が完全に有効になり、x=6 になります。しかし、その式にはそれ以上のシーケンス ポイントがなく、したがって x は 6 のままで z=6 のままであるため、2 番目のインクリメントは完全な式の評価後にのみ有効になります。?
x++
x++