2013-06-10 3 views

Antwort

42

Booleschen XOR ist das gleiche wie !=, "nicht gleich."

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, ich total verpasst dieses ... Danke. –

+2

Ich stimme nicht zu. Der Ausdruck "1! = 2" ergibt "wahr", aber "1 XOR 2" ist definitiv falsch, da sowohl 1 als auch 2 "wahr" sind. Um den Operator! = Als XOR zu verwenden, müssen Sie zuerst nach 'bool' umwandeln. – IanPudney

+4

@quinxorin: das ist Unsinn. Ich fragte nach _logical_ XOR, 1 und 2 sind nicht _logical_ Werte. In C++ bedeutet logisch "bool". –

3

Wenn Sie suchen sind, ob zwei Werte identisch sind, können Sie != oder das bitweise Operator ^ verwenden. Sie können dies verwenden, wenn Ihre Werte bereits bool sind. Allerdings, wenn Ihre Werte nicht rein bool sind, werfen sie bool zuerst:

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

Sind Sie absolut sicher, dass die zweite funktioniert? Stimmt der Standard, dass alle 'bool'-Variablen, die denselben Wert ergeben, bitweise gleich sind? –

+0

Ich bin unsicher über den Standard; Es funktioniert in MinGW unter Windows. – IanPudney

+0

Das bedeutet gar nichts. –