2013-06-10 8 views

risposta

42

XOR booleano è la stessa cosa di !=, "non uguale".

p | q | p != q 
--+---+------- 
F | F | F  
T | F | T  
F | T | T  
T | T | F  

http://en.wikipedia.org/wiki/Truth_table#Logical_conjunction

+0

Wow, ho completamente perso questo ... Grazie. –

+2

Non sono d'accordo. L'espressione '1! = 2' restituisce' true', ma '1 XOR 2' è decisamente falso, poiché sia ​​1 che 2 sono' true'. Per usare l'operatore! = Come XOR, devi prima eseguire il cast di 'bool'. – IanPudney

+4

@quinxorin: è una sciocchezza. Ho chiesto di _logical_ XOR, 1 e 2 non sono valori _logical_. In C++, logico significa 'bool'. –

3

Se siete alla ricerca di se due valori sono identici, è possibile utilizzare != o l'operatore bit a bit ^. Puoi usare questo se i tuoi valori sono già bool. Tuttavia, se i valori non sono puramente bool, li getteranno a bool prima:

((bool)myVal)!=((bool)myOtherVal) 
((bool)myVal)^((bool)myOtherVal) 
//either works 
+0

Sei assolutamente sicuro che il secondo funziona? Lo standard dice che tutte le variabili 'bool' che valutano lo stesso valore sono uguali a bit? –

+0

Non sono sicuro dello standard; funziona in MinGW su Windows. – IanPudney

+0

Ciò non significa assolutamente nulla. –