为什么这一段c语言程序的输出是 1,0,1,0 (简化了一下)啊? 求大神解释 第一个int a 是什么类型的变量呢?

#include <stdio.h>
void func();
int a;
void func()
{
printf("no 1 a=%d\n",a);
}
void main()
{
int a=1;
printf("no 1 a=%d\n",a);
func();
{
int a=1;
printf("no 1 a=%d\n",a);
func();
}
}

这是变量作用域的问题,第一句的int a;是全局变量,只要在这个文件中就能访问到,被初始化为0。
第一个1:main函数中printf("no 1 a=%d\n",a);打印的。因为前面一句定义了一个a = 1,printf("no 1 a=%d\n",a);打印的就是它。
第二个0:main函数中执行func();打印的,因fun()中打印语句只能访问到第一句的全局变量a。
第三个1:{
int a=1;
printf("no 1 a=%d\n",a);
func();
}这里面printf打印的它前面定义的a,
第四个0:原因也是fun()中打印语句只能访问到第一句的全局变量a。

访问变量时,访问他能访问到得距离他最近的变量。
如下:
void func();
int a;
void func()
{
printf("no 1 a=%d\n",a);
}
int main(int argc, char *argv[])
{
int a=1;
printf("no 1 a=%d\n",a);
func();
{
int a=2;
printf("no 1 a=%d\n",a);
func();
}
{
printf("no 1 a=%d\n",a);
func();
}
system("PAUSE");
return EXIT_SUCCESS;
}
结果为:1, 0, 2, 0, 1, 0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-02
能输出0就不错了。第一个a是全局变量。
看看全局变量 私有变量的作用域。
就明白了。
最后一句,任何变量别忘记初始化。
第2个回答  2012-06-03
2楼正解。。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网