#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 :(得分:1)
使用未初始化的变量是导致未定义的行为的原因。一个编译器可能会将变量初始化为0
,但如果您更改编译器甚至更改编译标志(例如使用不同的优化级别),这可能很容易改变。
不要指望它。
答案 1 :(得分:1)
这是一种未定义的行为。您没有初始化x的值。如果你是 不这样做,然后它需要一些垃圾价值。垃圾值可以是我们无法预期的价值。因此,只需初始化您正在使用的变量。