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