複合代入式の値

知らなかったし、今も自信がない。

  int i, j, k;
  
  j = 1;
  k = 2;
  
  i = j += k;  /* i, j, k の値は? 順に、3, 3, 2 となったけど。 */

手持ちの C ハンドブックによると、

だから、+= は代入演算子
また、

  • 代入式の値は、代入後の左辺

ということだから、i の値は、j += k を行った後の j となる。

ただ、文献がちょっと古いので本当かどうか。