以下代码打印AA
:
#include <stdio.h>
int main()
{
for(int i;i;i--)
printf("A");
return 0;
}
为什么变量i
的初始值为2
,而不是某些垃圾值?
变量i
的生命周期是静态的还是自动的?
答案 0 :(得分:2)
显然,变量i
未初始化。这意味着实现的行为未定义。 i
的值仅为垃圾值。这是2
。
答案 1 :(得分:1)
变量i
的范围是整个for语句(包括其主体)。它具有自动存储持续时间,并在退出循环后将被销毁。您不能将其声明为具有静态存储持续时间,例如
for(static int i;i;i--)
printf("A");
由于变量i
未初始化,因此它具有可以作为陷阱值的固定值。