问题描述
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
}
,
按原样离开没有错。该代码仍将编译