有没有办法在一个条件语句中写出如下语句?
a和b不能同时等于5。 (a可以是5,b可以是5,但是a AND b不能是5)
最佳答案
正如克里斯指出的那样,您要查找的是逻辑异或,相当于逻辑不等于 !=
:
if ((x == 5) != (y == 5))
我很想使用按位 XOR 来编写它,因为它更具可读性并且可以立即识别为 XOR:
if (x == 5 ^ y == 5)
但值得注意的是,按位运算符不会短路。这与 XOR 无关紧要,因为无论如何都必须评估两个操作数,但了解其他操作可能很重要。
(传教士警告:在几乎所有情况下,不要在 bool 上下文中使用按位运算符。一些运算符的语义略有不同,并且由于它们不会短路,所以可能会有一些相当奇怪的问题。)
关于c++ - 条件语句(给定),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112645/