一道C的考题

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:24:56
复习C时碰到一道题目,求输出结果:

#define a 10

void foo();

void main()
{
printf("%d",a);

foo();

printf("%d",a);
}

void foo()
{
# undef a
# define a 50
}

答案是1010 ,自己运行了一下也是,但我总觉得应该是1050 啊

变量作用域的问题

#define a 10定义的是全局的变量。
全局有效。

void foo()
{
# undef a
# define a 50
}
这个函数里的 a,只在函数体内有效,函数结束也就不存在了,故第二次输出的还是10。