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

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 10:29:17
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

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
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

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
首先要明确变量的作用域,以及static函数的意义
int a=1; a是全局变量,其作用域为其之后的所有函数,但若函数中又声明了a变量,则全局变量不再起作用
static int a=2; a是静态变量,该变量作用域为f函数,且对其修改都将保存,所以在f函数内全局变量a不起作用
int a=3,a是局部变量,其作用域仅为for模块内,for执行完后,局部变量a不再有效,所以在main函数中F(a)调用时是用的局部变量a,但for后面的k+=a;则是全局变量a
这样就可以理解了
i=0; 进入for内部语句,k += F(3)所以 k = 0+F(3) = 0+ (a++ + c + 1) = 2+ 3+1 =6
执行完这个后,静态变量a自加,所以a = 3
i=1; 进入for内部语句,k+=F(3),k = 6+F(3) = 6+ (a++ + c + 1) = 6 + (3 + 3 +1) = 13
执行完这个后,静态变量a自加,所以a = 4
i=2,不再进入for内部
执行k+=a;此处的a为全局变量a,所以 k += 1,k =14
输出