为什么局部变量初始化为零

Chi*_*nna 0 c linux local-variables

根据我的知识,局部变量是未初始化的,即它包含垃圾值.但是下面的程序给出0(零)作为输出.

main()
{
    int i;
    printf("%d\n",i);
}
Run Code Online (Sandbox Code Playgroud)

当我在程序之上运行它总是给出0.我知道0也可以是垃圾值,但每次我得到零作为输出.任何人都可以知道它的原因吗?

Yu *_*Hao 5

垃圾值意味着发生在该内存位置的任何事情.在您的情况下,值恰好为零.在另一台机器中可能不是这种情况.

请注意,为了调试(例如0xA5A5),某些编译器会使用一些魔术值填充未初始化的变量,但它通常也不为零.