写出程序运行结果int sum(int a){auto int c=0;static int b=3;c+=1;b+=2;return(a+b+C);}vo
写出程序运行结果
int sum(int a)
{
auto int c=0;
static int b=3;
c+=1;
b+=2;
return(a+b+C);
}
void main()
{
38
int I;
int a=2;
for(I=0;I<5;I++)
{
printf("%d,", sum(a));
}
}
程序输出的结果为:8,10,12,14,解析:我们可以先看main函数,这里定义了一个循环,这个循环的循环体一共执行4次,也就是printf("%d,", sum(a));要执行4次,那么其中的sum()函数被调用了4次;接下来我们看到sum()函数,在这里每一轮循环a=2都作为参数传进来,返回值为a+b+c作为主函数打印的值,那么我们来分析每一轮循环后a,b,c的值:第一轮循环后:a=2,b=5,c=1,a+b+c=8第二轮循环后:a=2,b=7,c=1,a+b+c=10第三轮循环后:a=2,b=9,c=1,a+b+c=12第四轮循环后:a=2,b=11,c=1,a+b+c=14由于变量在定义时,b的前面加了static关键字,所以b所在的内存单元的数据在经历每一轮循环后其中存储的数据不会被释放掉,所以它的值会随着循环的次数增加一直累加;而变量c前面加了auto关键字,变量a默认是加auto关键字,它们所在内存单元的数据在经历每一轮循环后其中存储的数据会被释放掉,所以每次循环的初始值不变。所以,程序最终的运行结果为:8,10,12,14,