#include <stdio.h>
int f (int a)
{ auto int b=0 ;
static int c=1 ;
b++ ;
c+=3 ;
return(a+b+c) ;
}
void main( )
{ int a=5 , I ;
for(I=0 ; I<3 ; I++)
printf("%4d", f(a)) ;
}
最后输出是什么?请解释原因。
auto声明后,每次调用这个函数都会将这个b重定义为0;
而进行stable声明后,c将不会被改变,所以值是不同的;
第一次循环:
a=5(这个是固定的);
b=0+1=1(自增运算符);
c=1+3=4;
返回一个值并输出a+b+c=10;
第二次循环:
a=5;
b=0+1=2(在这里重置);
c=4+3=7(而它并没有);
a+b+c=13;
第三次循环也是一样的,b重置,c加3,而a为定值5,所以三次输出相差3,就是c的三次加3,和b无关。
纯手打,求采纳,有问题,继续问