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

admin2009-04-15  24

问题 以下程序运行后的输出结果是【  】。
   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。
转载请注明原文地址:https://kaotiyun.com/show/2OXp777K
0

最新回复(0)