打印未识别的int变量将输出什么?

时间:2019-04-12 13:20:38

标签: c

如果我运行此程序:

#include <stdio.h>

int main()
{
    int a=32,b=2,c,i;
    for(i=0;i<3;i++){
        printf("%d\n",c);
        c=a/b;
        a=c;
    }

    return 0;
}

输出为:

32765
16
8

在这里,我没有定义C的值,此输出32765从何而来? 即使我再次运行此代码更多的时间,它显示不同的值,如32764,32767。为什么显示此不同的输出?

2 个答案:

答案 0 :(得分:1)

由于c具有自动存储期限(即是一个非静态的局部变量)且未初始化,因此其值为不确定。尝试打印从未使用其地址(即不是地址操作符&的主题)的未初始化变量会调用undefined behavior

即使您确实使用了c的地址,但如果它包含陷阱表示形式,您仍然可能会有未定义的行为。如果它不包含陷阱表示(大多数实现中都没有),则该值为 unspecified (未指定),这仅意味着无法预测打印出的值。

答案 1 :(得分:0)

没有明确的初始化程序的自动变量(当程序流进入并离开变量的作用域时会自动分配和释放的局部变量)具有未定义(即垃圾)值。