#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.即发生无限lopp。
我想知道这是由于没有操作而发生,因为我们没有变量来存储++ i的值(由增量函数返回),或者是由于其他原因? 。请解释。
答案 0 :(得分:12)
是的,这是一个无操作。对increment
的调用不会改变任何内容,因为值是按值传递的。
i
的本地定义会影响全局定义。因此,仅使用i
的本地定义,并且i
的全局定义不受在变量的本地副本上执行的增量的影响。
答案 1 :(得分:2)
您递增的变量是传递给increment的参数的本地副本。您已同时命名i
,因此我可能无法如此清楚,但重点是i
中的increment
与全局定义的{{1}}不同。