c - 如何将异或 (XOR) 运算符应用于多个谓词?

标签 c operators

我想知道是否有一种方法可以将异或(对于两个操作数称为 XOR)运算符应用于多个谓词?

例如,假设 pqr 是三个谓词(换句话说, bool 变量)。我想写一个像这样的 if 条件:

if ((p || q || r) && !(p && q && r))

即我希望条件为真,前提是至少其中一个条件为真,但不是全部为真。

显然 if (p ^ q ^ r) 不起作用(考虑 p=trueq=truer=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/

相关文章:

无法运行使用 gcc (minGW) 编译的 .exe 文件

c# - 为什么模运算符 (%) 结果在 C# 中隐式转换到左侧而不是右侧?

c++ - 运算符->有什么特别之处以及它是如何工作的?

c - fopen() 中的绝对路径

c - Apple 开源开发者库

python - 如何保护 Python 源代码?

c:绘制控制台的表格布局

Java += 运算符?

C# 隐式转换和 == 运算符

java - 为什么Java中的除法只显示0?