确保条件遵循条件的简短(且可读!)方法是什么:
如果 a 为真,则运行代码。
如果 b 为真,则运行代码。
如果 a 和 b 都为真,则不运行代码。
一种方式是嵌套:
if (a || b)
{
if(!(a && b))
{
//Code
}
}
这很冗长,但也许更容易传达意图?
我们可以通过以下方式稍微缩短它:
if((a||b) && (!a&&b))
但这有点神秘,尤其是在变量名很长的情况下。
我错过了什么吗?有没有更好的写法?
最佳答案
您可以按照其他人的建议使用 ^,但要小心,因为它也是一个按位异或。关于何时用于按位以及何时用于逻辑的确切行为因语言和数据类型而异。
例如,在 Java 中确保 A 和 B 是 boolean 类型,这样就没问题。
在 c 中,如果你为整数 i
和 j
做了;
if (i ^ j) {
}
然后它会对 i 和 j 进行按位异或,然后如果结果为 0,则结果将被处理为 false,否则为 true。
在 Java 中这会给你一个语法错误,因为表达式的结果不是 boolean 值。
一些可行的替代方案:
C/C++:
(!i ^ !j)
// The ! converts i to boolean.
// It also negates the value but you don't need to reverse it back as you are comparing the relative values
C#/Java:
(A ^ B)
// Make sure A or B are boolean expressions, you will get a compile time error if they are not though.
关于c# - 什么是显示 XOR 语句的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21131836/