【问题标题】:auto variable initialized to Zero [duplicate]自动变量初始化为零[重复]
【发布时间】:2015-03-23 04:44:09
【问题描述】:
#include<stdio.h>
int main()
{
    int x;
    printf("%d\n", x);
    x=x>0?x:x+1;
    printf("%d\n", x);
}

在这个x中初始化为0,但是为什么呢?在 GCC 中编写和编译代码

【问题讨论】:

  • 未初始化变量的值取决于编译器。根据编译器的堆处理,它可以是 0 或垃圾值

标签: c


【解决方案1】:

使用未初始化的变量会导致未定义的行为。一个编译器可能会将变量初始化为0,但如果您更改编译器甚至更改编译标志(例如使用不同的优化级别),这很容易改变。

别指望它。

【讨论】:

    【解决方案2】:

    这是一种未定义的行为。您没有初始化 x 的值。如果你是 不这样做,那么它需要一些垃圾值。垃圾值可以是任何值,我们不能指望这个值会来。所以只需初始化你正在使用的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多