为什么自动变量将包含垃圾,如果没有设置?

pet*_*who 3 c garbage

在'C编程语言'第三版和第32页中,我看到那些令我困惑的行:

因为自动变量随函数调用而来,所以它们不会从一次调用到下一次调用保留它们的值,并且必须在每个条目上显式设置.如果它们没有设置,它们将包含垃圾

是不是说对于下面的代码,a在程序完成执行后不会包含垃圾,如果我这样声明a:int a;那么a会包含垃圾吗?

#include <stdio.h>
int main () {
        int a = 5;
        // int a;
        printf("\n\t %d", a);
}
Run Code Online (Sandbox Code Playgroud)

Woj*_*wka 10

使用未初始化变量的值是未定义的行为.实际上,自动变量分配在处理器寄存器或堆栈中.通常,如果没有初始化,它们将获得当前用于堆栈的寄存器或存储器中的值.因此,例如,int变量可能包含一部分内存,该内存double在刚刚调用的函数中是可变的.换句话说,该值是随机的.

  • 或者,如果你没有脑死亡编译器,它将是一个寄存器.其中的内容也将是未定义的...... (4认同)