アップデート。これでは完全な答えは得られません。どうすれば 5 になるのか、はっきりとはわかりません。
私が以下に書いていることは、C++ に当てはまることに基づいています。それは、Precedence がステートメントの一部が実行される順序を制御しないのに役立つ可能性があり、1 つのステートメントの効果が自動的に更新されることはありません (少なくとも保証されていません)。ステートメント全体の変数。
例えば:
a=1
b=a++ ; // b is 1, a is 2
c=++a ; // c is 3, a is 3
c+b と書くことを考えてみましょう。これは 1+3=4 と評価されます。しかし、あなたが書くとき
a++ + ++a
個々のインクリメントのたびに a が更新されるという言語からの保証はありません。
したがって、次の効果を得ることもできます
a=1
b=a++ ; // b is 1, a is 2
a=1 ;
c=++a ; // c is 2, a is 2
結果は 3
これは実際には、優先順位や評価順序とはほとんど関係がありません。たとえば、変数がステートメント内で更新されることが保証されている場合、評価の順序を反転すると、何があっても 4 になります。
a=1
c=++a ; // c is 2, a is 2
b=a++ ; // b is 2, a is 3