我有以下代码:
int i;
for(i=0;i<2;i++) {
...
printf("i = %d\n",i);
rtdb_pull(rtdb, buf, &ncenter);
printf("i = %d\n",i);
...
}
当我运行它时,它在 i=0 时运行得很好,但是一旦 i=1,rtdb_pull 函数似乎会减少计数器,所以我最终陷入了循环。这怎么可能?我没有将 i 传递给 rtdb_pull,rtdb_pull 也没有使用名为 i 的变量。
如果我这样做,一切正常:
int i;
for(i=0;i<2;i++) {
...
printf("i = %d\n",i);
int j = i;
rtdb_pull(rtdb, buf, &ncenter);
i = j;
printf("i = %d\n",i);
...
}
作为记录,我在 Ubuntu 13.04 上使用 gcc 4.7.3 并使用 ANSI c 进行编译。我没有从编译器收到任何相关警告。