2013-06-10 43 views

Trả lời

42

Boolean XOR tương tự như !=, "không bằng nhau".

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, tôi hoàn toàn bị mất này ... Cảm ơn. –

+2

Tôi không đồng ý. Biểu thức '1! = 2' ước lượng thành' true', nhưng '1 XOR 2' là rất chắc chắn sai, vì cả 1 và 2 đều là' true'. Để sử dụng toán tử! = Dưới dạng XOR, trước tiên bạn phải chuyển sang 'bool'. – IanPudney

+4

@quinxorin: điều đó là vô nghĩa. Tôi hỏi về _logical_ XOR, 1 và 2 không phải là giá trị _logical_. Trong C++, logic có nghĩa là 'bool'. –

3

Nếu bạn đang tìm kiếm cho dù hai giá trị là giống hệt nhau, bạn có thể sử dụng != hoặc các nhà điều hành Bitwise ^. Bạn có thể sử dụng giá trị này nếu các giá trị của bạn đã là bool. Tuy nhiên, nếu giá trị của bạn không hoàn toàn bool, đúc họ bool đầu tiên:

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

Bạn có chắc chắn rằng tác phẩm thứ hai không? Liệu tiêu chuẩn có nói rằng tất cả các biến 'bool' có giá trị giống nhau không? –

+0

Tôi không chắc chắn về tiêu chuẩn; nó hoạt động trong MinGW trên Windows. – IanPudney

+0

Điều đó không có ý nghĩa gì cả. –

Các vấn đề liên quan