条件陈述(给定)

时间:2013-11-21 04:39:47

标签: c++

有没有办法在一个条件语句中编写以下语句?

a和b不等于5。 (a可以是5,b可以是5,但是AND b不能是5)

3 个答案:

答案 0 :(得分:3)

正如克里斯指出的那样,你所寻找的是逻辑XOR,这相当于逻辑不等于!=

if ((x == 5) != (y == 5))

我很想用bitwise XOR编写它,因为它更易读并且可以立即识别为XOR:

if (x == 5 ^ y == 5)

值得注意的是,按位运算符不会短路。与XOR无关,因为无论如何都必须对两个操作数进行评估,但是了解其他操作可能很重要。

Preachy警告:在几乎所有情况下,不要在布尔上下文中使用按位运算符。某些运算符的语义略有不同,因为它们不会短路,所以可能会有一些相当奇怪的陷阱。)

答案 1 :(得分:1)

if(a!=b && (a==5 || b==5))
{
}

并感谢@chris

答案 2 :(得分:0)

if ((a == 5 && b != 5) || (a != 5 && b == 5))
{
  //expr
}