我在想C语言中是否有XOR逻辑运算符(类似于AND的&&但是针对XOR)。我知道可以将XOR分解为AND、NOT和OR,但一个简单的XOR会更好。然后我想到如果在两个条件之间使用普通的XOR位运算符,它可能会起作用。实际测试证明确实如此。
请考虑以下代码:
int i = 3;
int j = 7;
int k = 8;
为了这个相当愚蠢的例子,如果我需要k要么大于i,要么大于j但不是两者都满足,那么异或运算会非常方便。
if ((k > i) XOR (k > j))
printf("Valid");
else
printf("Invalid");
或者
printf("%s",((k > i) XOR (k > j)) ? "Valid" : "Invalid");
我使用按位异或符号^,结果显示"无效"。将两个比较的结果放入两个整数中,这两个整数都包含1,因此异或运算得到了一个假值。我尝试使用按位与符号&和按位或符号|,两者都得到了预期的结果。所有这些都有意义,因为真条件具有非零值,而假条件具有零值。
我想知道,当按位运算符&、|和^能够达到相同的效果时,使用逻辑运算符&&和||是否有理由?