#include <stdio.h>
int i=1;
other()
{ static int a=2;
static int b;
int c=10;
a=a+2; i=i+32; c=c+5;
printf("OTHER\n");
printf("i:%d a:%d b:%d c:%d\n",i,a,b,c);
b=a;
}
main()
{ static int a;
register int b=-10;
int c=0;
printf("MAIN\n");
printf("i:%d a:%d b:%d c:%d\n",i,a,b,c);
c=c+8;
other();
printf("MAIN\n");
printf("i:%d a:%d b:%d c:%d\n",i,a,b,c);
i=i+10;
other()
因为你第一次执行other的时候把a的值赋值给了b,所以第二次执行other的时候b的值就是上一次a的值,也就是4
注意 b是函数other作用域内的b,并且是static类型(静态存储区),然后第一次执行完后给b赋值为4,所以下一次就是4了
static的特性了解一下,变量作用域了解一下。