AppleLLVMコンパイラ3.1で次の問題が発生しました。
int numIndex = 0;
int *indices = (int *)malloc(3 * sizeof(int));
indices[numIndex] = numIndex++;
indices[numIndex] = numIndex++;
indices[numIndex] = numIndex++;
for (int i = 0; i < 3; i++) {
NSLog(@"%d", indices[i]);
}
出力:1 0 1
と
int numIndex = 0;
int indices[3];
indices[numIndex] = numIndex++;
indices[numIndex] = numIndex++;
indices[numIndex] = numIndex++;
for (int i = 0; i < 3; i++) {
NSLog(@"%d", indices[i]);
}
出力:0 0 1
出力として012を期待しています。LLVM GCC 4.2を使用した同じコードは、正しい出力を生成します。私が見逃している最適化フラグや誤解しているものはありますか?