2

私の同級生は私に質問をしました:

この後の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++" によって計算された値を返すべきではありませんか?

手伝ってくれてありがとう :)

4

1 に答える 1

7

演算子の最初のオペランドと 2 番目または 3 番目の演算子の評価の間にシーケンス ポイントがあるため、最初の演算子が完全に有効になり、x=6 になります。しかし、その式にはそれ以上のシーケンス ポイントがなく、したがって x は 6 のままで z=6 のままであるため、2 番目のインクリメントは完全な式の評価後にのみ有効になります。?x++x++

于 2012-04-10T07:12:00.520 に答える