设有以下函数: f ( int a){ int b=0;static int c = 3; b++; c++;return(a+b+c); }如果在下面的程序中调用

如题所述

2楼正解
每次循环a的值都是2,b会重新赋值为0,b++之后为1,即每次计算的时候a和b永远是2和1,和为3.
至于c,由于是静态变量,所以只赋值一次,即第一次循环的时候赋值为3,之后每循环一次,执行一次c++,即三次循环c的值分别为4,5,6,所以最终结果应该是
7
8
9
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-28
就是啊,没说完吧……
c由于是静态变量,c初始值定义为3,以后调用函数f(),c不会重新定义,仅执行后面的c++语句。
b在每次进入的时候都会重新申明和定义,固每次进入程序都会初始化为0。
执行依次执行f(1),f(2),f(3)的话返回值分别为6,8,10
第2个回答  2012-05-28
static int c = 3;//c是静态变量,函数返回时不像临时变量需要销毁,下次调用该函数时保存的是上一次的值追问

但是答案中没有你给的选项。。。。题目错了吗

追答

我只是给你分析下 static 变量的作用而已,zx956592819 解释的是不对的
其实是a和b的值不变,变化的是c的值

第3个回答  2012-05-28
说完啊,C是全局变量!追问

main(){int a=2,i;
for(i=0;i<3;i++) printf("%d\n",f(a));
}

追答

输出
6
7
8

追问

谢谢 ,能分析下吗?

追答

第一次循环时,将a=2传入函数,结果为2+1+3=6,第二次是2+2+3=7,第三次是2+3+3=8,三次循环,c和a都没变,分是3和2,变的是b,因为b++,每次自增1,第一次由0变为1,第二次由1变2,第三次由2变3。