问题
单项选择题
以下程序的运行结果是
#include<stdio.h>
int a=1;
int f(int c)
static int a=2;
c=c+1:
return(a++)+c;
main()
int i, k=0;
for(i=0; i<2; i++) int a=3; k+=f(a);
k+=a;
printf("%d\n", k);
A) 17
B) 16
C) 15
D) 14
答案
参考答案:D
解析: f子函数中语句return(a++)+c;访问的a,是其内部定义的静态局部变量,main函数中语句k+=f(a)访问的a是其局部变量,所以两次调用实际上都是调用f(3)。第一次调用时,f子函数中c=4,表达式(a++)+c的值为6,a递增为3,k=6。第二次调用时,f子函数中c=4,表达式(a++)+c的值为7,a递增为4,k=6+7=13。语句k+=a中的a是全局变量,所以k=13+1=14。