有没有办法在一个条件语句中编写以下语句?
a和b不等于5。 (a可以是5,b可以是5,但是AND b不能是5)
答案 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
}