c言語のインクリメント問題


1分あれば読み終わります

プログラミング言語の繰り返しでおなじみのインクリメントですが、
cのインクリメントには

i++

++i

があります

上からプレインクリメント、ポストインクリメントと呼びます

両方とも立派なインクリメントなのですが、

プレインクリメントは式が評価される前に

ポストインクリメントは式が評価された後に

インクリメントされます。

なので

int main(void)
{
    int i[3] = { 0, 1, 2 }, j = 1;
    printf("%i\n", i[++j]);
    return 0;
}
#=> 2

int main(void)
{
    int i[3] = { 0, 1, 2 }, j = 1;
    printf("%i\n", i[j++]);
    return 0;
}
#=> 1

こうなるんですね。