y += (x-- ? z++ : --z); これはあなたの質問であり、答えは簡単です......
私たちが知っているように、X-- や x++ のようなものはポスト インクリメントまたはポスト デクリメントと呼ばれます。そのため、ポスト インクリメントまたはデクリメントのルールに従って、最初に式が評価され、次にインクリメントまたはデクリメントのみが実行されます。つまり、最初に評価してから増減します.....
今すぐあなたの質問を解決しましょう:
Y+=X--?Z++:--Z....現在、左、中央、右の 3 つの部分が含まれています...ここで考慮すべき点は次のとおりです。「左部分が true の場合、中央部分が返され、それ以外の場合は右側の部分...条件部分であるため、常に左側の部分から実行が開始されます"
ステートメントを次のように単純化します: Y+=X?Z:Z;....左の部分が前または後のインクリメントまたはデクリメントを持っているかどうかを確認します.....ポスト ++/-- が der den の場合は、最初に簡略化されたものを評価しますステートメント...... + +/- - を使用してください.....
左部分には後置デクリメントがあります...最初に式を評価しましょう...つまり
y+=1:3:3 //条件部分のゼロ以外の値は真の条件 (つまり 1)
これで、条件が true になり、中央部分が返され、その時点でコントロールが中央部分に移動すると、x 値のみが減分されます。つまり、0 になります....
2 番目の単純化されたステートメントは Y+=Z です。(\\条件が真で、中間部分を取得したため、コンパイラは残りの部分、つまり右側部分をスキップします。)
ここで、Z がポスト ++/-- (または)プレ ++/--) であるかどうかを観察します...はぁ..そのポストインクリメント..最初に単純化されたステートメントを評価し、次に Z の値を増やします....すなわち
Y+=Z =>Y=Y+Z
=>Y=2+3 =>y=5
式が評価されると、つまり Y=5 になるので、Z の値をインクリメントします。つまり、4 になります。