yaotti's diary

Software is Eating the World

インクリメント

#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は++された後の値が使われるのか。
微妙なタイミングだな。