运行
#include "stdio.h"int Square (int i)
{
return i*i;
}
int main()
{
int i=0;
i = Square(i);
for (; i<3; i++)
{
static int i=1;
i += Square(i);
printf("%d ", i);
}
printf("%d \n", i);
}
请问这个程序怎么运行的呢,for那边没太看懂,不知道第三个结果怎么求出来的 for循环相当于for(i=0;i<3;i++) 循环3次
(1) i=1; i+=Square(1)(结果是2)
(2) i=2; i+=Square(2) (结果是6)
(3) i=6; i+=Square(6)(结果为42)
因为是static i,所以i不会每次都被重新赋值。 #include "stdio.h"
int Square (int i)
{
return i*i;
}
int main()
{
int i=0;
i = Square(i);
for (; i<4; i++)
{
static int i=1;//局部静态变量,只会初始化一次,这个局部变量与第8行的i不是一个变量。
i += Square(i);
printf("%d ", i);//这里输出的是局部静态变量i,第一次循环,初始化i为1,i=1+1=2;第二次循环,i=2+4=6;第三次循环,i=6+36=42
}
printf("%d \n", i);//这里输出的是第8hang定义的i
} 北冰羊 发表于 2020-11-30 16:59
for循环相当于for(i=0;i
循环里的i与static i虽然是同名变量,但是并非同一内存区,编译器会区分
页:
[1]