#include<stdio.h>
int i;
int increment(int i)
{
return ++i;
}
int main()
{
for(i=0;i<10;increment(i))
{
printf("%d",i);
}
return 0;
}这里的输出是000000。也就是说,无限的罗普发生了。
我想知道这是由于无操作导致的,因为我们没有变量来存储++i的值(由增量函数返回),或者是由于其他原因?.please解释。
发布于 2011-09-16 12:10:28
是的,这是个禁区。对increment的调用不会更改任何内容,因为值是通过值传递的。
i的局部定义遮蔽了全局定义。因此,只使用i的局部定义,而i的全局定义不受在变量的局部副本上执行的增量的影响。
发布于 2011-09-16 12:11:06
被递增的变量是传递给increment的参数的本地副本。您已经将这两个i都命名为i,所以我可能不太清楚,但重点是increment中的one与全局定义的不同。
https://stackoverflow.com/questions/7440064
复制相似问题