int i=100;
int fun() {static int i=10; return ++i;}
void main () { fun(); cout<<fun()<<","<<i<<endl;
理解成这样了
输出为12, 100
int i=100;定义了
全局变量i,其在之后代码中都有效,除非有某个模块中又声明了同名的变量i
static int i=10; 声明了
静态变量i,该i只在fun函数中有效,且在fun中全局i无效,静态变量在fun函数退出后继续保存,下次fun在执行时直接读取保存的值
main中,先执行fun(),静态i变为11,并保存,第二次fun()时,返回++i = ++11 =12,同时静态i变为12, 但cout中的后一个i不在fun中,所以实际使用的是全局i,所以输出结果为12,100