这段代码是不确定的行为?

Gst*_*tso 2 c

我有一个变量i:

int i;
if(b){
    i=1;
}
else{
    i=-1;
}
Run Code Online (Sandbox Code Playgroud)

i因为未定义行为的int i;存在?或者我们应该int i=0先行吗?

Bat*_*eba 7

绝对没问题.

您正在初始化i所有程序控制路径,而不是在初始化完成之前读取该值.

在这种情况下,我更喜欢使用三元运算符.

int i = b ? 1 : -1;

因为它不太容易被意外地引用到未初始化的i.