#include"stdio.h" int f(int a) { int b=0; static int c=3; b++; c++; return a+b+c; } main() { int a=2

,i;for(i=10;i<13;i++) printf("%4d",f(a));} 此中,b和c怎么变,为什么这样变??static怎么理解??

#include"stdio.h" 
int f(int a) 
{int b=0; 
 static int c=3;
 b++; c++; 
 return a+b+c; 

main() 
{int a=2,i;
 for(i=10;i<13;i++)
 printf("%4d",f(a));
}
运行程序后,输出  7  8  9
在每次调用f()函数时,b会每次都赋初值为0,然后再加1;而c是“静态变量”,初始化赋值为3,只进行一次,第二次调用f()函数时c的值是4,第三次调用f()函数时c的值是5。

for(i=10;i<13;i++) printf("%4d",f(a));}
这个循环,共循环3次。由于
 int b=0;
是局部变量,每次调用时,都被赋初值0;
而static int c=3;定义的c,则是“静态变量”赋初值的操作,只进行一次,调用结束后的值会被保留到下一次调用,继续有效。所以,在循环中,被调用3次f(a);得到3次的返回值是不一样的。程序运行后,会输出:   7   8   9
分别是2+1+4,2+1+5,2+1+6的结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-01
static是静止变量,当这个程序再次运行的时候,static定义的变量值不返回原值,继续运用上一次的值,你给的a没有赋初值,所以程序不能运行,第一次b是0,c是3;第二次b也是0,c是4;第三次b还是0,c是5……
第2个回答  2012-07-02
b和c 都是自加1 b变为1 从变为4
static 是静态局部变量,普通的局部变量当函数调用时存在,结束时消失,但是静态局部变量会等到程序结束后消失本回答被网友采纳
第3个回答  2012-07-01
b、c都自加1,因为是后++,所以等运算完后自加。静态变量。
第4个回答  2012-07-01
不定义时是动态·变量
定义static后是静态变量,用法同上