【发布时间】:2010-12-08 11:23:35
【问题描述】:
有这种事吗?这是我第一次遇到对它的实际需求,但我没有看到列出in Stroustrup。我打算写:
// Detect when exactly one of A,B is equal to five.
return (A==5) ^^ (B==5);
但是没有^^ 运算符。我可以在这里使用按位^ 并得到正确的答案(不管机器表示真假)吗?我从不将& 和&& 或| 和|| 混合使用,所以我犹豫要不要使用^ 和^^。
我会更自在地编写自己的 bool XOR(bool,bool) 函数。
【问题讨论】:
-
实际上,Jim,这不是 & 和 && 之间的唯一区别,例如... 1 && 2 是 True。但是 1 & 2 => 0。因此,我认为“短路”只是他们碰巧拥有的属性。逻辑是更重要的特征...
-
不要说 2 && 3 == true,而是 2 & 3 == 2。
-
David Thomley:嗯,是的,但是 2 ==> 是的,所以没关系...记住,真的没有任何布尔值...
-
@BrianPostow:实际上,在 C++ 中有。
-
如下所示,这是丹尼斯·里奇关于为什么它不存在的答案:c-faq.com/misc/xor.dmr.html
标签: c++ operators logical-operators