[Java][Tips] インクリメント・デクリメント演算子を式の中で使うと

今月は、Javaの文法基礎を新人研修で教えているのですが、こんな質問がありました。


int a=5;
System.out.println(a++  +  a--);

を実行すると、「-1」と表示されるのですが、どうしてですか?

ふだん、インクリメント・デクリメント演算子を式に組み合わせて用いることがないので「ん?」と思ったのですが、インクリメント・デクリメント演算子は後置の場合「評価後演算」になるため、以下のような動作になるのだと思われます。

  • 左辺の「a++」は、式の値として「a」そのものの値(この例では5)を取り出してから、1加算(6になる)
  • 右辺の「a–」は、左辺で加算された「a」の値(この例では6)を取り出してから、1減算(5になる)
  • 式の結果自体は、上記によって「5-6」になるので、「-1」となる

私は資格系の研修はあまりやったことがないので、こういう現場であまり見かけなさそうな例はちょっと苦手です。もしかしたら上記の推測も全然違うのかもしれません・・・もし、間違ってるよ、というご指摘がありましたら、こっそりコメントでお知らせください(笑)。