有以下程序: #include <stdio, h>int a =2;int f(int n){ static int a: 3; int t=0; if(n%2){ static int a=4;t+ =a++;} else

admin2009-01-15  24

问题 有以下程序: #include <stdio, h>int a =2;int f(int n){   static int a: 3;    int  t=0;    if(n%2){ static int a=4;t+ =a++;}    else     { static int a=5;t+ :a++;}    return   t + a + +;main ( ){   int  s=a,i;    for(i=0;i<3;i++)s + =f(i);    prinff("% d \n" ,s); }程序运行后的输出结果是(    )。

选项 A、26
B、28
C、29
D、24

答案4

解析 在函数外面定义的变量a是全局变量,其作用范围从定义该变量的位置开始到本文件的结束;在f函数中的if子句(复合语句)和else子句中定义的变量a是局部变量,其作用范围只在其所在的复合语句内;在f函数中定义的第一个变量a是静态局部变量,其作用范围只限于函数f内部,无论被调用多少次都只初始化一次,并且保留上次函数调用结束时的值,该变量不对复合语句产生作用,所以,f函数的返回值是这个a变量和t值相加的结果。
转载请注明原文地址:https://kaotiyun.com/show/5pHp777K
0

最新回复(0)