Bir tane bulamadım, ama hiç birinin olmadığına inanmakta zorlanıyorlar.C veya C++ standart kitaplığında mantıksal (boolean) bir XOR işlevi var mı?
cevap
Boolean XOR, !=
ile aynı değil, "eşit değil."
http://en.wikipedia.org/wiki/Truth_table#Logical_conjunction
p | q | p != q
--+---+-------
F | F | F
T | F | T
F | T | T
T | T | F
Eğer iki değer aynı olup olmadığını arıyorsanız, size
!=
veya bitsel operatörünü
^
kullanabilirsiniz. Değerleriniz zaten
bool
ise bunu kullanabilirsiniz. değerleriniz tamamen
bool
değilse Ancak, ilk
bool
onları dökme:
((bool)myVal)!=((bool)myOtherVal)
((bool)myVal)^((bool)myOtherVal)
//either works
olmalıdır. İkinci çalışmalardan kesinlikle emin misiniz? Standart aynı değerde değerlendiren tüm "bool" değişkenlerinin bitwise eşit olduğunu söylüyor mu? –
Standarttan emin değilim; Windows'da MinGW'de çalışır. – IanPudney
Bu hiç bir şey ifade etmiyor. –
Vay be, ben tamamen bu ... Teşekkür kaçırdı. –
Katılmıyorum. '1! = 2' ifadesi' true' olarak değerlendirilir, ancak '1 ve 2' her ikisi de true olduğundan, 'XOR 2' kesinlikle yanlıştır. ! = Operatörünü bir XOR olarak kullanmak için önce 'bool' yapmalısınız. – IanPudney
@quinxorin: bu saçmalık. _logical_ XOR hakkında soru sordum, 1 ve 2 _logical_ değerleri değil. C++ 'da mantıksal anlamı' bool '. –