若有以下程序 #include <stdio.h> int f(int m) { static int n=0; int a=2; n++; a++; return n+m+

admin2021-04-28  23

问题 若有以下程序
     #include <stdio.h>
     int  f(int  m)
     {  static  int  n=0;
        int  a=2;
        n++;  a++;   return  n+m+a;
     }
     main()
     {  int  k;
        for (k=0; k<4; k++)  printf("%d,", f(k));
     }
则程序的输出结果是

选项 A、3,5,7,9,
B、4,7,10,13,
C、4,5,6,7,
D、4,6,8,10,

答案D

解析 本题考查静态局部变量以及自增运算符,静态局部变量在函数调用结束后,并不释放,仍然保留它的值,本题中,k为0时,return n+m+a之前,n为1,a为局部变量是3,m为0,所以第一个返回值为4。k为1,在函数返回值之前,静态局部变量为2,局部变量a仍然为3,m为1,所以结果是6,依此类推答案为D。
转载请注明原文地址:https://jikaoti.com/ti/NKz0FFFM
0

最新回复(0)