【发布时间】:2019-08-02 00:39:30
【问题描述】:
我想知道条件语句的正确用法,例如 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
}
现在,如果不将所有 3 个变量都包含在每个条件中,我会得到未定义的行为吗?每个未解释的条件都会进入 else 语句吗?如果是这样,如果我摆脱 else 语句会发生什么?我有完全相同的 if 语句(在更复杂的情况下),而且我似乎每次都没有进入正确的语句。
如果有这方面的规定,请赐教?
【问题讨论】:
-
您不必在条件中包含任何变量。
-
欢迎来到 Stack Overflow!听起来你可以使用good C++ book
-
“我会得到未定义的行为吗” 您可能会认为您可以在 C++ 中凭空获得 UB,但事实并非如此坏的。 :p
-
@Hypomania 关于你的咆哮(我回滚了)总共有 6 人对你的问题投了反对票。以此来判断一个大约有 900 万人的社区似乎有点苛刻。
-
学习或对基础有误解绝对没有错,这是在学习一门新的编程语言时可以预料到的。问题是在 Stack Overflow 上提问时,我们无法真正向您解释所有这些,entire books written on C++ 做得更好,所以这里最好的计划是先解决这个问题,然后您的问题会受到更好的欢迎,因为我们实际上可以提供帮助并给出“不”之外的技术答案。
标签: c++ if-statement conditional language-lawyer undefined-behavior