我在 Apple LLVM 编译器 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
我期待 0 1 2 作为输出。使用 LLVM GCC 4.2 的相同代码会产生正确的输出。是否有任何我遗漏的优化标志或我误解的东西?