【问题标题】:If statement logic reverseif语句逻辑反转
【发布时间】:2021-01-08 02:20:05
【问题描述】:
bool x = someFuncThatReturnsTrueorFalse();
if (!x && (str1.length() != str2.length()) {
    // do nothing
} else {
    // do something
}

如何重新排列上面的代码以消除 else 语句? 如果 bool = false 并且 str1 和 str2 的长度不同,我什么都不用做。否则,我需要做一些事情(例如函数调用)。

对于我的一生,我想不出任何办法来改变这一点。如果您需要更多详细信息,请告诉我。

【问题讨论】:

  • 平凡的布尔代数。 if (A && B) 的反义词是if (!(A && B)),相当于if ((!A) || (!B))

标签: c++ if-statement logic logical-operators


【解决方案1】:

最简单的方法是在条件周围加上!()

bool x = someFuncThatReturnsTrueorFalse();
if (!(!x && (str1.length() != str2.length())) {
    // do something
}

另一种方法是使用德摩根定律:!(A && B) 等价于 !A || !B

bool x = someFuncThatReturnsTrueorFalse();
if (x || (str1.length() == str2.length()) {
    // do something
}

【讨论】:

【解决方案2】:

保持原样并没有错。代码仍然会编译

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多