インクリメント
#include <stdio.h> #include <stdlib.h> main(void) { int c, i, j; int *buf; buf = (int *) malloc(sizeof(int)*5); for (i=0; i<5; ++i) buf[i] = i; j = 0; while (j < i) { printf("j: %d ", j); printf("%d: %d\n", j, buf[j++]); /* ここ */ } }
実行結果
j: 0 1: 0 j: 1 2: 1 j: 2 3: 2 j: 3 4: 3 j: 4 5: 4
ほほー。
buf[j++]は++されるまえに確定されるけど、その前のjは++された後の値が使われるのか。
微妙なタイミングだな。