在一个程序中,我试图检查两个布尔值(从函数返回); 需要检查的条件是:
- 只有当返回值中的任何一个为真且另一个为假时,我才有问题;
- 如果两者都是真或假,我很高兴下一步.
以下哪两个例子是检查条件的有效方法,还是有更好的解决方案?
a和b是整数值,我在其中检查isCorrect函数的正确性条件,它返回true或false.
1.
// checking for the correctness of both a and b
if ((isCorrect(a) && !isCorrect(b)) ||
(!isCorrect(a) && isCorrect(b)))
{
// a OR b is incorrect
}
else
{
// a AND b are both correct or incorrect
}
Run Code Online (Sandbox Code Playgroud)
2.
// checking for the correctness of both a and b
if (! (isCorrect(a) ^ isCorrect(b)))
{
// a OR b is incorrect
}
else
{
// a AND b are correct or incorrect
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
伊瓦尔
PS:代码可读性不是问题.编辑:我打算在第二个选项中有一个XOR.另外,我同意==和!=选项,但如果我不得不使用布尔运算符呢?
if (isCorrect(a) != isCorrect(b)) {
// a OR b is incorrect
} else {
// a AND b are correct or incorrect
}
Run Code Online (Sandbox Code Playgroud)
您的测试不需要布尔运算符,只需:
if (isCorrect(a) == isCorrect(b)) {
// they both have the same value
} else {
// they don't ...
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 我故意不使用相同的评论来反映评论的主要目的应该是描述意图,而不是具体的实施.在这种情况下,最简单的意图陈述是两者a并b获得相同的结果.