Tôi muốn biết liệu toán tử ưu tiên trong ngôn ngữ lập trình có phụ thuộc vào việc triển khai hay không có quy tắc cố định mà tất cả ngôn ngữ đều tuân theo. Và nếu có thể, bạn có thể đặt hàng các toán tử sau với ưu tiên cao nhất trước: AND, OR, NOT, XOR.Các toán tử Boolean được ưu tiên
Trả lời
Tôi googled và phát hiện ra this cho biết một số ngôn ngữ như APL và SmallTalk không có quy tắc ưu tiên nhà điều hành và họ đánh giá đúng biểu thức từ trái sang phải/trái sang phải.
Tuy nhiên, trật tự tương đối ưu tiên theo sau là KHÔNG> XOR> VÀ> OR trong hầu hết các ngôn ngữ đặc biệt là những nguồn gốc từ C
Theo [this] (http://en.cppreference.com/w/c/language/operator_precedence), ưu tiên của C là thực tế NOT> AND> XOR> OR, AND xuất hiện trước XOR. JavaScript và Java cũng tuân theo thứ tự này. – mbomb007
Boolean hoặc Bitwise? Không có quy tắc cố định, hầu hết các ngôn ngữ đều có quy tắc tương tự nhưng khác nhau về chi tiết. Tra cứu nó theo định nghĩa ngôn ngữ.
Được rồi. Tôi đã có các toán tử logic khi đăng. Cảm ơn đã nhắc tôi về các toán tử bitwise. – Mika
Có ba toán tử Boolean cơ bản: NOT, AND, OR. XOR chỉ là một phiên bản đơn giản của A AND NOT B OR NOT A AND B
hoặc (A OR NOT B) AND (NOT A OR B)
. Vì vậy, chỉ có ba loại này có quyền ưu tiên chung: KHÔNG> VÀ> HOẶC. XOR có vị trí khác nhau trong ngôn ngữ, nhưng nó chắc chắn không được ưu tiên cao hơn AND và không thấp hơn OR. Hầu hết các ngôn ngữ (ví dụ: C/C++/Javascript, v.v.) có ngôn ngữ giữa AND và OR, nhưng trong các ngôn ngữ khác (ví dụ: Perl) XOR có cùng mức ưu tiên như OR.
(OR có thể được thể hiện chỉ AND và NOT sử dụng, nhưng nó vẫn là một nhà điều hành cơ bản: A OR B = NOT(NOT A AND NOT B)
)
Có lý do chính đáng để có quyền ưu tiên khác không? Tôi nghĩ rằng (trong một thế giới lý tưởng) các toán tử logic nên có cùng một mức độ ưu tiên và các phép toán lôgic luôn được thực hiện từ trái sang phải. Có lý do chính đáng nào để theo một cách khác không? 'true xor false hoặc true' nên được đánh giá là true (' (true xor false) hoặc true'), không phải là false ('true xor (false hoặc true)') – Junior
Có. Lý do rất giống với toán tử số học. Đây là một "đại số khác" (đại số boolean). AND là một loại phép nhân, và OR giống như bổ sung. Có các khu vực, nơi nó quan trọng hơn đại số chuẩn (ví dụ: xây dựng các mạch số). – FERcsI
- 1. Toán tử logic nào ưu tiên
- 2. Toán tử lambda Calculus ưu tiên
- 3. Chỉ định ưu tiên động và ưu tiên cho một toán tử trong Menhir/Ocamlyacc
- 4. Ưu tiên toán tử logic với NAND, NOR, XNOR
- 5. ternary có điều kiện và toán tử gán ưu tiên
- 6. Toán tử Haskell và chức năng ưu tiên
- 7. Ưu tiên toán tử SQL Logic: Và và hoặc
- 8. Ưu tiên toán tử - Toán tử số học và điều kiện
- 9. Ưu tiên toán tử được ghi trong lớp .NET Regex ở đâu?
- 10. Ưu tiên thực sự cho các toán tử kết xuất trong Scala
- 11. Tại sao có mức độ ưu tiên cho các toán tử như static_cast?
- 12. Ví dụ về ngữ pháp Perl 6 với các quy tắc ưu tiên toán tử
- 13. Ghi đè toán tử 'boolean' trong python?
- 14. các ưu tiên bên phải của biểu thức toán học
- 15. Ưu tiên của toán tử dấu phẩy bên trong toán tử điều kiện trong C++ là gì?
- 16. Thuật toán để đối sánh các đối tác được ưu tiên thành các nhóm ba số
- 17. Các toán tử boolean có thể được sử dụng với bộ tiền xử lý không?
- 18. Chuyển đổi constructor so với toán tử chuyển đổi: ưu tiên
- 19. Hàng đợi ưu tiên với các ưu tiên mục động
- 20. Tại sao "new Date(). ToString()" làm việc cho ưu tiên toán tử Javascript?
- 21. Thứ tự ưu tiên toán tử trong Visual Basic 6.0 là gì?
- 22. Hành vi Weird Solr/Lucene với toán tử boolean
- 23. Tại sao toán tử xẻng (<<) được ưu tiên hơn cộng-bằng (+ =) khi xây dựng một chuỗi trong Ruby?
- 24. Các phương pháp được tải quá mức ưu tiên
- 25. Boolean và String quá tải của toán tử gán (C++)
- 26. hành vi của bool với toán tử phi boolean
- 27. Ưu tiên giữa các bộ chọn CSS
- 28. toán tử Boolean vs nhà khai thác Bitwise
- 29. Tại sao chức năng bạn bè được ưu tiên cho chức năng thành viên cho toán tử <<
- 30. Ưu tiên toán tử Objective-C của dấu ngoặc vuông được sử dụng làm biểu thức/ký hiệu thông báo?
Tôi không bao giờ có thể nhớ những ưu tiên của XOR nhưng tất cả các ngôn ngữ tôi đã sử dụng có cùng độ ưu tiên cho ba người còn lại. – Neil