【发布时间】:2013-11-10 08:46:30
【问题描述】:
我有以下代码:
bool s = true;
for (...; ...; ...) {
// code that defines A, B, C, D
// and w, x, y, z
if (!(A < w) && s == true) {
s = false;
}
if (!(B < x) && s == true) {
s = false;
}
if (!(C < y) && s == true) {
s = false;
}
if (!(D < z) && s == true) {
s = false;
}
}
这段代码运行良好。但是,出于几个(不重要的)原因,我想更改代码,以便我可以启动 s = false; 并在 if 语句中将其设置为 true。它尝试了以下方法:
bool s = false;
for (...; ...; ...) {
// code that defines A, B, C, D
// and w, x, y, z
if (A >= w && s == false) {
s = true;
}
if (B >= x && s == false) {
s = true;
}
if (C >= y && s == false) {
s = true;
}
if (D >= z && s == false) {
s = true;
}
}
但是,由于上面的代码正在运行,因此无法正常运行。我知道在逻辑的某个地方想错了,但我不知道在哪里。有没有人看到我可能明显的错误?
编辑:添加了另外三个 if 语句。自从他们被评论后就错过了他们。
【问题讨论】:
-
注意
A && B的否定不是!A && !B,而是!A || !B) -
@thriqon 但是他还不如把 s 设置为 true,因为它总是会进入 if。
-
改变条件(A
-
请显示更多信息,可能是您的整个 for 循环或结果有何不同以及您的期望。
-
你需要查阅德摩根定律。
标签: c++ if-statement logic