这题的关键是要考虑运算符的优先级和前自增,后自增的具体操作. n=2正解因为 = 的优先级低于 ++,所以先运算 ++ ,因为 ++为后置,所以先自增,再返回自增前的值。(More Effetive C++里有说到)此时虽然 i 自增,但其返回之前的值,返回的值又被 “=” i ,相当于 i 并没有变化于是:1 :i = i++ ; //i = (i++) 而不是i = i , (i++) = 1 ,而
i = 2 ,所以i = 12 :n = i++; // i自增了,但并没有对自身赋值,所以 i = 2 , n = 13 :i = i++;// 同1 ,...
|