请问这个代码中i的值是怎么执行的呢
我的想法是:第一次循环,i首先定义等于0,接着再在f()中执行i++变为1,
然后因为这是个循环,所以下一步i执行for()中的i++变为2,2<5,即第二次循环开始,i的值为2
以此类推,第一次循环i=0
第二次循环i=2
第三次循环i=4
一共就执行三次循环
但是这个代码最后的结果为15,与我的想法不同。我上网找了解析,发现一共执行5次循环,i的值每次只+1,但每次循环的执行过程不是有两个i++吗,为什么只执行了一个,执行的又是哪个部分的i++呢
int f()
{
static int i=0;
int s=1;
s+=i; i++;
return s;
}
int main()
{
int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
return 0;
}
函数f里边的i和主函数里边的i不是同一个i,虽然都是i,但是相互独立,互不影响,函数f里的i只能在f中起作用,s+=2,s变成了1+0为1后,i++f中的i由于声明为0结果变为了1,返回值为s也就是1退出了这个函数f,但是外边的i不受影响,还是0,举个例子,你儿子叫王刚,我儿子也叫王刚,我让你儿子帮我办事我给了他一块糖,等我儿子回来了,我也给我儿子一块糖,虽然都是王刚,但是各自只有一块糖。