2011-03-12 28 views
9

Có, đây là hợp lệ C++:và, hoặc, không so với &&, ||,!

if (false or (true and not false)) ... 

Among others như bitandxor. Trong C, chúng từng là macro, nhưng bây giờ chúng là are keywords! Bạn thậm chí có thể quá tải chúng! Sau đó, tại sao ai đó bao giờ dạy hoặc viết một cái gì đó như:

if (false || (true && !(false))) ... 

Tại sao ai sử dụng chúng?

+0

"Trong C, chúng từng là macro" Không, chúng không bao giờ là macro "trong C", mặc dù một số chương trình C riêng lẻ có thể đã xác định các macro đó. Adn đây không phải là một câu hỏi thực sự, nó có ý kiến ​​và tranh luận - xem FAQ. –

+0

có thể trùng lặp của [Có ai đang sử dụng toán tử boolean được đặt tên không?] (Http://stackoverflow.com/questions/1103313/is-anybody-using-the-named-boolean-operators) [Những toán tử logic nào C++ bạn sử dụng: và, hoặc, không và các nhà khai thác kiểu ilk hoặc C? tại sao?] (http://stackoverflow.com/questions/1103313/is-anybody-using-the-named-boolean-operators); xem thêm [C++ mã thông báo thay thế?] (http://stackoverflow.com/questions/555505/c-alternative-tokens) [Có thể tắt hỗ trợ cho "và"/"hoặc" sử dụng toán tử boolean trong gcc?] (http://stackoverflow.com/questions/1069352) –

+1

@Jim Balter: Nhưng trong C, chúng _are_ macro, được định nghĩa trong 'iso646.h'. –

Trả lời

6

Vì chúng không cho phép mã C/C++ hỗn hợp mà không bao gồm các tệp tiêu đề bổ sung, ít được người lập trình biết đến và không rõ ràng là and là phiên bản ngắn hay bit.

+2

Vâng, giữa '&' và '&&' nó dễ dàng hơn nhiều để đoán cái nào là một toán tử bitwise hơn giữa 'và' và' bitand'. Thật không may mặc dù 'not_eq' là một quan hệ, trong khi' or_eq' là một toán tử gán phức, trớ trêu thay là bitwise. –

2

Tại sao không ai? Một số sử dụng chúng. Những người khác nghĩ rằng các ký hiệu dễ đọc hơn từ.

1

Mọi người không biết về họ (tôi đã không cho đến bây giờ).

2

Visual C++ không hỗ trợ chúng.

+0

Microsoft Visual C++ yêu cầu để được bao gồm để sử dụng các số nhận dạng này, thêm một phụ thuộc vô dụng khác vào một thứ cần phải có trong ngôn ngữ cơ bản. (hoặc không nên, nhưng không nên ngồi đâu đó ở giữa) – Tic

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