c++ - 条件语句(给定)

标签 c++

有没有办法在一个条件语句中写出如下语句?

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/

相关文章:

c++ - 创建 mwArray 的问题

c++ - 如何从多个继承的类对象中分配 unique_ptr<base>?

c++ - Boost ASIO - 什么是异步

c++ - 如何将特征矩阵发送到 GLSL?

c++ - 为什么以及何时执行重载构造函数?

c++ - 图形项的 QGraphicsScene 内的可拖动像素图

c++ - 在最小大小的队列中排队

c++ - 是否可以在 C++ 中处理字符串流中的单个元素

c++ - 从哪里可以下载 Turbo C++ 安装程序

c++ - 结构中的最后一个成员类型为 T[1] 而不是 T*