在程序中我试图检查两个布尔值(从函数返回);需要检查的条件是:
- 只有当返回值中的任何一个为真且另一个为假时,我才有问题;
- 如果两者都是真或假,我很高兴下一步。
以下两个例子中的哪一个是检查条件的有效方法,还是有更好的解决方案?
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
}
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
}
谢谢,
的Ivar
P.S:代码可读性不是问题。 编辑:我打算在第二个选项中有一个XOR。 另外,我同意==和!=选项,但如果我不得不使用布尔运算符呢?
答案 0 :(得分:6)
if (isCorrect(a) != isCorrect(b)) {
// a OR b is incorrect
} else {
// a AND b are correct or incorrect
}
答案 1 :(得分:6)
您的测试不需要布尔运算符,只需:
if (isCorrect(a) == isCorrect(b)) {
// they both have the same value
} else {
// they don't ...
}
编辑 - 我故意不使用相同的评论来反映评论的主要目的应该是描述意图,而不是具体的实施。在这种情况下,最简单的意图陈述是a
和b
都获得了相同的结果。
答案 2 :(得分:2)
简单地:
if (isCorrect(a) == isCorrect(b))
{
// a AND b are both correct or incorrect
} else {
// a OR b is incorrect
}
答案 3 :(得分:1)
这个怎么样?
if(isCorrect(a) != isCorrect(b))
{
//problem
}
else
{
//not a problem
}
你也可以使用XOR,但是!=工作正常,如果处理布尔值IMO,则更易读。