#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: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楼正解。。。