#include<stdio.h>
int x;
int main( )
{
void fun( );
int x=1;
if(x==1)
{
int x=2;
printf("%d,",x++);
}
{
extern int x;
printf("%d,",++x);
}
fun( );
return 0;
}
void fun( )
{
printf("%d\n",x++);
}
求解
输出结果是2,1,1
第一次运行printf,很好理解,x就是2
第二次运行printf,因为第一次运行的x定义范围只有在if中,所以第二次的x值是全局变量中定义的x,运行结果是1
第三次运行fun函数,因为运行过第二次printf,x已经被++,这里先输出x,也就是上次的结果1,最后做++