选择题
若有以下程序:
#include <stdio.h>
int f(int m)
{ static int n=0;
int a=2;
n++; a++; return n+m+a;
}
main()
{ int k;
fbr(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时,在函数返回值之前,静态局部变量n为2,局部变量a仍然为3,m为1,所以结果是6,依此类推,答案为D。
提交答案
关闭