如果语句逻辑反向

问题描述

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

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

对于我的一生,我想不出任何办法来改变这一点。让我知道您是否需要更多详细信息。

解决方法

最简单的方法是将!()放在条件周围。

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

另一种方法是使用De Morgan定律:!(A && B)等效于!A || !B

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

按原样离开没有错。该代码仍将编译