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