Hyp*_*nia -8 c++ conditional if-statement undefined-behavior language-lawyer
我想知道条件语句(例如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语句(在更复杂的情况下),而且我似乎每次都不会进入正确的语句。
如果有此规定,请赐教。
通过不将所有3个变量都包含在每个条件中,我会得到不确定的行为吗?
不将所有变量都包含在每个条件中的行为本身并不是不确定的。
是否将所有未说明的条件都放入else语句中?
else
如果条件为false,则执行Statement-false(即,关键字之后的语句)。
如果我放弃else语句会怎样?
从if语句之后的语句继续执行。