【发布时间】:2018-06-23 18:56:12
【问题描述】:
这段代码 sn-p 取自在线 C 编程测验。
请帮助我理解这段代码。显然它打印了一个垃圾值。这里我们有一个局部变量 var,它隐藏了全局变量 var 的作用域。我假设局部变量 var 用全局变量 var 的值初始化,全局 var 的右值被复制到局部 var 中。我知道从那时起,代码中的名称 var 现在指的是本地 var。所以打印本地 var 也应该打印 5。但事实并非如此。程序打印一个垃圾值。这意味着本地 var 未初始化或在本地 var 初始化期间发生了某种错误。这里发生了什么?这是未定义行为的问题吗?
#include <stdio.h>
int var = 5;
int main() {
int var = var;
printf("%d", var);
}
【问题讨论】:
标签: c scope initialization