i = 0; i = i++ + ++i; これで i の中身はどうなるの?っていう話。 C言語(gcc)だと 3 で、JavaやJavaScriptだと 2 になった。 Cはアセンブリを見るとこうなってる。 movl $0, -12(%ebp) leal -12(%ebp), %eax incl (%eax) movl -12(%ebp), %edx leal -12(%ebp), %eax addl %edx, (%eax) leal -12(%ebp), %eax incl (%eax) 要するにこういうことをやってるみたい。 i = 0; i += 1; i = i + i; i += 1; 代入式の前後でインクリメントされてるっぽい。なんで代入が終わってからインクリメントしてるんだよ。他のコンパイラだと結果が変わる可能性もありそうだ。 一方、JavaやJavaScriptは内部で