注册 登录
编程论坛 C++教室

Logical XOR 在c++怎么用?符号是是什么啊

叶纤 发布于 2020-02-06 12:22, 1348 次点击
我知道Logical and&&      Logical or||都有自己的符号
而且有短路现象
但是Logical XOR的符号是是什么啊?我知道这个符号没有短路现象
难道要这样写
aXORb想要测试都没办法测试


[此贴子已经被作者于2020-2-6 12:24编辑过]

2 回复
#2
rjsp2020-02-06 14:04
C/C++中不存在 Logical XOR,只有 bitset XOR。

&&、|| 等是 逻辑操作符
&、| 等是 位操作符,其中“^”就是位操作的“异或”

一定要说“Logical XOR”的话,那应该是“!=”,即“不同为true,相同为false”
#3
叶纤2020-02-06 14:20
嗯嗯,文章作者说也可以用!=模拟XOR,我就想是不是XOR有它特殊的符号
原文是这样说的you can easily mimic logical XOR using the inequality operator (!=)(我用翻译器翻译的可能和作者说的有偏差,我把原话复制粘贴你看看)
然后我又继续查找其他网页确实也有人提到了^这个符号,我就想这不是位运算符吗
以下是那个人的举例
    2. C ++中没有逻辑XOR,主要是因为与AND和OR不同,不能对XOR进行“短时间”评估:使用AND和OR,一旦您评估了第一个操作数,一半的时间就会知道是否存在 需要评估第二个操作数。 使用XOR不能做到这一点。 必须始终评估两个操作数。
    In other words:
    if ( (a==b) & (c==d) )
   
   
    generates different code from
    if ( (a==b) && (c==d) )
   
   
    while
    if ( (a==b) ^ (c==d) )
   
   
    would generate exact the same code as
    if ( (a==b) ^^ (c==d) )
^^应该是您说的bitset  XOR
1