2013-06-10 15 views

Odpowiedz

42

Boolean XOR to to samo co !=, "nie równe".

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, całkowicie brakowało tego ... Dzięki. –

+2

Nie zgadzam się. Wyrażenie "1! = 2" ma wartość "prawda", ale "1 XOR 2" jest zdecydowanie fałszywe, ponieważ zarówno 1, jak i 2 są "prawdziwe". Aby użyć operatora! = Jako XOR, musisz najpierw rzucić na 'bool'. – IanPudney

+4

@incxorin: to bzdura. Pytałem o _logiczne_ XOR, 1 i 2 nie są wartościami _logicznymi. W języku C++ logiczny oznacza 'bool'. –

3

Jeśli szukasz czy dwie wartości są identyczne, można użyć != lub operatory bitowe ^. Możesz użyć tego, jeśli Twoje wartości są już bool. Jednakże, jeśli wartości nie są czysto bool, wrzucili do bool pierwszy:

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

Czy jesteś absolutnie pewny, że drugi działa? Czy standard mówi, że wszystkie zmienne 'bool', które oceniają tę samą wartość, są bitowe równe? –

+0

Nie jestem pewien standardu; działa w MinGW w systemie Windows. – IanPudney

+0

To nic nie znaczy. –

Powiązane problemy