【发布时间】:2020-07-06 15:33:14
【问题描述】:
#include <stdio.h>
int num1;
void newfun();
void main()
{
int num2;
num1 = 10;
num2 = 20;
newfun();
printf("%d %d", num1, num2);
}
void newfun()
{
int num2 = 30;
int num1 = 40;
}
书上说值的结果是num1=40和num2=20
但我不断返回num1=10 和num2=20。
为什么全局变量不起作用?
谢谢
【问题讨论】:
-
局部变量会覆盖同名的全局变量。
-
如果这个例子和书中出现的完全一样,那么这本书就有错误。我建议查找勘误表,如果已发布。
-
@EugeneSh。我想在这个例子中,它甚至与阴影无关,因为初始化明确地专用于本地
num1的声明。如果这是newfun()中的一项任务,那么阴影将是一个主题。 -
这本书在变量的主题上是错误的。
main函数的返回类型也是错误的。你需要一本更好的书。 -
这是什么书?是“让我们 C”吗?