【发布时间】:2016-11-14 20:19:48
【问题描述】:
以下代码打印AA:
#include <stdio.h>
int main()
{
for(int i;i;i--)
printf("A");
return 0;
}
为什么变量i的初始值是2,而不是一些垃圾值?
变量i的生命周期是静态的还是自动的?
【问题讨论】:
-
2 是垃圾值。
-
@chux 你怎么确定?
-
此程序在未初始化时使用具有自动存储持续时间的对象的值表现出未定义的行为。
-
@Coder 对于 UB,任何值都是
int的候选垃圾。 (包括陷阱) -
@chux 垃圾值随机出现。但是如果你多次运行这段代码,变量的初始值总是2。如何?
标签: c for-loop scope initialization declaration