【问题标题】:Different outputs while defining local variables定义局部变量时的不同输出
【发布时间】:2015-08-21 12:54:04
【问题描述】:

为什么在 DevC++ 中 i2 的输出为 1,而在其他地方却为 0?

#include <stdio.h> 
int main(void) {
    int i1,i2;
    char c1,c2;
    float f1,f2;
    long l1,l2;
    double d1,d2; 
    printf("\n%d %d",i1,i2);
    printf("\n%c %c",c1,c2);
    printf("\n%d %d",f1,f2);
    printf("\n%l %l",l1,l2);
    printf("\n%lf %lf",d1,d2);
    return 0;
}

【问题讨论】:

标签: c local-variables


【解决方案1】:

当您打印它们时,您没有初始化任何导致Undefined behavior 的变量。请注意,当您声明时

int i1,i2;
....

不初始化它们,它们包含垃圾值。

【讨论】:

    【解决方案2】:

    未初始化或未赋值的自动对象具有不确定的值,即未指定的值或陷阱表示。

    【讨论】:

      【解决方案3】:

      是的,它们包含垃圾值。但是为什么所有其他都打印 0 而只有 i2 打印 1。如果它是一个垃圾值,那么对于每次执行,值都会有所不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 2013-04-29
        • 2013-04-24
        • 2018-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多