问题 填空题

以下程序运行后的输出结果是______。
int a=5;
fun(int b )
static int a=10;
a+=b++;
printf("%d",a ) ;

main()
int c=20;
fun(c ) ;
a+=c++;
printf("%d\n",a ) ;

答案

参考答案:30 25

解析: 本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中int a=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(stat- ic) ,本题函数fun()中static int a=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中int c=20定义了一个自动变量c,此自动变量c是个静态的局部变量。算术运算中a+=b++相当于a=a+b,b= b+1。所以,在第一个printf(“%d”,a) 中a=a+b=10+20=30,第二个printf(“%d”,a) 中a=a+c=5+20=25,即输出30 25。

单项选择题
判断题