&
持ってい&&
ます。|
持ってい||
ます。なぜないのです^
か^^
?
ショートサーキットではないことは理解していますが、セマンティクスが異なります。C では、true
実際にはゼロ以外の任意の値です。ビット単位の XOR は、常に論理 XOR と同じではありません。
int a=strcmp(str1,str2);// evaluates to 1, which is "true"
int b=strcmp(str1,str3);// evaluates to 2, which is also "true"
int c=a ^^ b; // this would be false, since true ^ true = false
int d=a ^ b; //oops, this is true again, it is 3 (^ is bitwise)
1
真の値がorであることに常に依存できるとは限ら-1
ないため、^^
演算子は非常に役に立ちませんか? 私はしばしば次のような奇妙なことをしなければなりません:
if(!!a ^ !!b) // looks strange