&
имеет &&
. |
имеет ||
. Почему ^
не имеет ^^
?
Я понимаю, что это не будет короткое замыкание, но у него будет другая семантика. В 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
или -1
, не может ли быть полезным оператор ^^
? Мне часто приходится делать такие странные вещи:
if(!!a ^ !!b) // looks strange