int f(int a) {int b=0; static int c=3

int f(int a)
{int b=0;
static int c=3;
b++;c++;
return(a+b+c);
}
void main()
{int a=2,j;
for(j=0;j<3;j++)
printf("%4d",f(a));}

对于主函数, 循环执行3次, 每次调用函数f的参数都是a=2. 即调用三次f(2) 打印返回值。

对于函数f。 调用三次, 每次都是参数a=2, 三次参与a+b+c运算时都是a=2

b是局部变量, 每次初始化为0,之后自加为1。三次参与a+b+c运算时都是b=1

c是静态变量, 每次是上次退出值。 每次调用c自加。 所以三次参与a+b+c运算时, c依次为4 5 6

于是返回值依次为7 8 9

输出为

   7   8   9

每个前面三个空格。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-23
输出结果是 7 8 9
因为每次进入f函数中b值都会被初始化为0,而c是静态变量,只在第一次进入该函数时声明一次,以后的值会持续变化,而不会变成初始值了
第2个回答  2018-03-13
#include <stdio.h>
int f(int a) 
{
int b=0; 
static int c=3;
b++;
c++; 
return(a+b+c); 

void main()
{
int a=2,j;
for(j=0;j<3;j++)
printf("%4d",f(a));   //第一次 a=2 b=0 c=3 b++ c++ 2+1+4 = 7  
 // 第二次 a=2 b=0 c=4 因为是static变量 所以只初始化一次 那么不用说就是8 了 第三次9
}
7   8   9Press any key to continue

相似回答