小编Hyp*_*nia的帖子

if语句的这种用法是否会导致未定义的行为?

我想知道条件语句(例如if语句)的正确用法,以避免未定义的行为。让我们从一个例子开始:

uint8_t x = 0;
bool y = false;
bool z = false;

if ((x == 135) and !y and !z) {
    //do something
}
else if ((x == 135) and y) {
    x = 5;
    z = true;   
}
else if ((x == 5) and z) {
    x = 135;
    z = false;
}
else {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

现在,是否通过不将所有3个变量都包含在每个条件中来获得不确定的行为?是否将所有未说明的条件都放入else语句中?如果是这样,如果我放弃else语句会怎样?我有完全相同的if语句(在更复杂的情况下),而且我似乎每次都不会进入正确的语句。

如果有此规定,请赐教。

c++ conditional if-statement undefined-behavior language-lawyer

-8
推荐指数
1
解决办法
121
查看次数