int count = 3;
int main(void)
{
int i, sum, count1 = 2;
for(i=0,sum=0; i<count1; i+=2,count1++)
{
printf("i = %d count1 = %d\n",i,count1);
static int count2 = 4;
count2++;
printf("aaaaa %d \n",count2);//5
if(i%2 == 0)
{
extern int count;
count++;//4
sum += count;
printf("bbbb %d %d \n",count,sum);
}
sum += count2;
printf("cccc %d %d \n",count2,sum);
}
printf("%d %d\n",count1, sum);
return 0;
}
网上看到一段笔试题,把 count1,count2 都改成count 跑出来的 结果跟目前的一样。
通过加的打印很明显看出几个变量相对的作用域。
总结一句话:{}里面谁有权就用谁。
局部变量值在栈中,全局变量,跟静态变量都在堆分配。地址都不一样。