今日は妖怪に遭遇。
言語:C
コード:
#include <stdio.h>
main()
{
int i = 5;
i = i++;
printf ("%i", i);
}
出力:
6
どのように?なんで?
これはトリッキーなコードのはずですが、逆です。怠慢なプログラマーはi = i++
、単純なインクリメントだと思うかもしれませんが、そうではありません。それでも、ここでは同じように機能します。はず5
です!JavaScriptのように。
何が起こっているはずです。
i
の値を取得します5
。i++
戻ります5
。i
ポストインクリメントi++
( まで6
) です。i
5
(によって返される)の値を取得しますi++
。i
( )の値5
が出力されます。
しかし、そうです6
。
SOまたはインターネット全体でこれに関する説明を見つけることができませんでした(その逆です)。
ここで何が壊れていますか?
説明してください。