#include<stdio.h>
int a=4;
int f(int n){
int t=0;
static int a =5;
if(n%2){int a=6;t+=a++;}
else{int a=7;t+=a++;}
return t+a++;
}
void main(){
int s=a,i=0;
for(;i<2;i++)s+=f(i);
printf("%d\n",s);
}
为什么第一次函数运行返回的值是12,
不应该是执行完t+=a++,t=7,a=8吗?
return的是15吗?
int a=7;t+=a++;
,执行完毕之后t
的值为7return t+a++;
,此时t=7
,a=5
(这时的a是static修饰的那个a),所以结果是12这道题考察的知识点是static的在修饰内部变量时候的持久性和同名变量的覆盖问题,你在同名变量选择时候糊涂了,所以才会得出
a=8
的结论,另外你的if(n%2)
估计也是个坑,最好写明确一些if(n%2==0)