C或C++标准库中是否存在逻辑(布尔)XOR函数?

Vio*_*ffe 9 c++ xor

我没有找到一个,但很难相信没有.

Mat*_*all 45

布尔XOR与!="不相等" 是一回事.

p | q | p != q
--+---+-------
F | F |   F    
T | F |   T    
F | T |   T    
T | T |   F    
Run Code Online (Sandbox Code Playgroud)

http://en.wikipedia.org/wiki/Truth_table#Logical_conjunction

  • @quinxorin:那是胡说八道.我问过_logical_ XOR,1和2不是_logical_值.在C++中,逻辑意味着`bool`. (5认同)
  • 我似乎误解了你的问题。我没有意识到“逻辑异或”的意思是这些值已经是布尔值了。 (3认同)
  • 我不同意.表达式"1!= 2"的计算结果为"true",但"1 XOR 2"肯定是假的,因为1和2都是"真".要将!=运算符用作XOR,必须首先强制转换为`bool`. (2认同)

Ian*_*ney 5

如果您要查找两个值是否相同,可以使用!=or 位运算符^。如果您的值已经是 ,则可以使用它bool。但是,如果您的值不是纯粹的bool,请将它们转换为bool第一个:

((bool)myVal)!=((bool)myOtherVal)
((bool)myVal)^((bool)myOtherVal)
//either works
Run Code Online (Sandbox Code Playgroud)

  • 在布尔值上使用 ^ 会将它们转换为整数,是的,标准规定 true 会转换为 1。它在 4.5/6 中。 (3认同)