#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后是静态变量,用法同上

...f(int a){int b=0;static int c=3;b++;c++;return(a+b+c);}void...
答案 : 7 8 9 过程 此题考查静态局部变量 加了static的静态局部变量在函数调用以后内存没有释放(因为static修饰的局部变量内存分配在全局区(也叫静态区),未使用static关键字修饰的局部变量内存分配在栈区(栈区的生命周期是函数结束之后)),因为c被static关键字修饰,所以下次进入此函数,c的值是...

...{ int b=0; static int c=3; b++; c++; return a+b+c; } main...
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是“静态变量”,...

...int a) { int b=0; static int c=3; a=(c++,b++); return (a...
a=(c++,b++);由于(c++,b++)中用了逗号,逗号作为运算符时返回最后的表达式值,所以这句相当于a=b++,由于++在后,所以这又相当于a=b;所以返回0

...int f(int a) { int b=0; static int c=3; a=c++,b++; return a...
include <stdio.h> int f(int a){ int b=0;static int c=3;\/\/静态变量,只做一次初值赋值,即:第一次调用fun c=3 a=c++,b++; \/\/第一次调用本函数后,c=4,第二次后,c=5,第三次后c=6...return a; \/\/第一次调用本函数后,a=3,二次后,a=4,第三次后a=5...} ...

...a) {int b=0;static int c=3; b++;c++; return(a+b+c); } void...
答案是789,如果你在输出里面加上一个空格的话就是 7 8 9,完。

int f(int a) { int b=0; static int c=3; a=c++,b++; return(a);}...
首先f函数中的c是一个静态变量,生命周期是全局的,这里c的3是以初值形式赋予的,所以只有第一次执行f()的时候赋为3,所以执行循环的时候:i=0时,a=2,先取值后++,f(2),a=3;f函数内a=c++,先取值后++,a=3(这个a的作用于在函数f内,不影响外部的a),c=4,最后的a被return给k;k=...

int f(int a) {int b=0; static int c=3
对于主函数, 循环执行3次, 每次调用函数f的参数都是a=2. 即调用三次f(2) 打印返回值。对于函数f。 调用三次, 每次都是参数a=2, 三次参与a+b+c运算时都是a=2 b是局部变量, 每次初始化为0,之后自加为1。三次参与a+b+c运算时都是b=1 c是静态变量, 每次是上次退出值。 每次调用...

...a) {int b=0; static int c=3;b++;c++; return(a+b+c);main()}in...
return(a+b+c); 5+1+4=10 当i=1时 print i i=1 调用fun(5){int b=0; b=0 static int c=3; 注意这里,上面已声明为静态整形,所以这里不再处理了,c=4 b++; b=1 c++; c=5 return(a+b+c); 5+1+5=11 当i=2时 print i i=2 调用fun(5){int...

运行结果:
运行结果是: 7 8 9 第一次for循环:调用函数f(a=2),返回:a+b+c=2+1+4=7;第二次for循环:调用函数f(a=2),返回:a+b+c=2+1+5=8;第三次for 循环:调用函数f(a=2),返回:a+b+c=2+1+6=9;因为c是静态常量,所以每次调用函数f()就修改一次它的值,每次调用函数f()...

f(int a=2) {int b=0; static c=3; a=c++; return(a);}啥意思。_百度...
int b=0; \/\/ 定义整形变量b,初始化为0。这个变量在函数中没有任何作用。static c=3; \/\/定义静态变量c,这种变量第二次调用时,会保存上次调用结束时的值。a=c++; \/\/将c的值赋给a,c的值加1。return(a);\/\/将a的值带回调用函数。} \/\/若下面是调用代码,则有:int i,j;i=fun()...

相似回答
大家正在搜