auto变量初始化为Zero

时间:2015-03-23 04:44:10

标签: c

#include<stdio.h>
int main()
{
    int x;
    printf("%d\n", x);
    x=x>0?x:x+1;
    printf("%d\n", x);
}

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

2 个答案:

答案 0 :(得分:1)

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

不要指望它。

答案 1 :(得分:1)

这是一种未定义的行为。您没有初始化x的值。如果你是 不这样做,然后它需要一些垃圾价值。垃圾值可以是我们无法预期的价值。因此,只需初始化您正在使用的变量。