我想知道是否有一种方法可以将异或(对于两个操作数称为 XOR)运算符应用于多个谓词?
例如,假设 p
、q
和 r
是三个谓词(换句话说, bool 变量)。我想写一个像这样的 if
条件:
if ((p || q || r) && !(p && q && r))
即我希望条件为真,前提是至少其中一个条件为真,但不是全部为真。
显然 if (p ^ q ^ r)
不起作用(考虑 p=true
、q=true
和 r=false
)
谢谢。
我得到了c语言的一个很好的答案,但我很有趣地知道c#中有解决方案吗?
最佳答案
这是一种方法:
if ((!!p + !!q + !!r) % 3)
但这可能太聪明了,不利于其自身的利益。
编辑:
if (((p ? 1 : 0) + (q ? 1 : 0) + (r ? 1 : 0)) % 3 != 0) // C#-compatible version
关于c - 如何将异或 (XOR) 运算符应用于多个谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547044/