2
A
回答
3
從理論上講,任何語言或邏輯系統都可以規定其運營商的優先級。然而,在我熟悉的所有語言中,按位(並且對於該事情是合乎邏輯的)AND具有比OR更高的優先級。
鑑於&和|是基本的運營商,並且至關重要的是(a)& b) c = d並不意味着&(b | c)= d,任何真正的語言都不會使其相對優先級不確定。
2
我不認爲它們有自然的優先權,不同的是,乘法和除法的優先級比減法和加法優先,因爲它們可以從減法和加法中構建。
In C &
has higher precedence than |
所以你的兩個陳述是不相等的。我猜想大多數C語言的語言都會從中繼承。
0
如果你給Wolfram Alpha'|'和'&',它會將其轉換爲BitAnd(x,y)和BitOr(x,y)等按位函數。二元運算符的表達式是模糊的,但它變成了不含糊的函數。
例如:1 & 2 | 3
將變成BitOr[BitAnd[1,2],3]
,並且只有一種方法來評估這些函數。正如以上評論者所指出的,Alpha將&置於上方優先。
鏈接:http://www.wolframalpha.com/input/?i=1+%26+2+%7C+3
有趣的是,翻譯二元運算此功能 '|'和'&'似乎是無證,因爲它沒有出現在任何標準的Wolfram指南中。
Ref1至:https://reference.wolfram.com/language/tutorial/OperatorInputForms.html
至Ref2:http://reference.wolfram.com/language/guide/BitwiseOperations.html
用於從其他語言按位運算符的一些例子,高 - >低
- 的Python:與,異或,或
- C++:與,xor或
- Golang:and,xor == or(left associative)
- 帕斯卡:和,或
- 夫特:與,異或==或(左結合)
- 達特:與,異或,或
- 使用Javascript:與,異或,或
參考文獻:
- http://reference.wolfram.com/language/guide/BitwiseOperations.html
- https://docs.python.org/3/reference/expressions.html
- http://en.cppreference.com/w/cpp/language/operator_precedence
- https://golang.org/ref/spec#Operators_and_Delimiters
- http://www.pilotlogic.com/sitejoom/index.php/about-us/104-wiki/pascal-basics/chapter-1/118-pascal-operators
- https://developer.apple.com/reference/swift/swift_standard_library_operators
- http://www.dartlang.cc/docs/spec/latest/dart-language-specification.pdf
- http://www.javascriptkit.com/jsref/precedence_operators.shtml
相關問題
- 1. 運算符優先級(按位'&'低於'==')
- 2. Numpy按位運算符優先級?
- 3. 運算符優先算法
- 4. C++二進制運算符優先順序
- 5. 運算符優先順序和評估混淆
- 6. 確定數學運算符的優先順序
- 7. JS中布爾運算符的優先順序是什麼?
- 8. Python - 奇怪/意外的行爲 - 運算符的優先順序
- 9. Prolog運算符優先級
- 10. C++運算符優先級
- 11. JavaScript運算符優先級
- 12. php運算符優先級
- 13. PHP:運算符優先級
- 14. Python運算符優先級
- 15. 運算符優先級
- 16. RethinkDB運算符優先級
- 17. C運算符優先級
- 18. 運算符優先於php
- 19. 運算符優先級
- 20. Java優先順序
- 21. CSS優先順序
- 22. CSS優先順序
- 23. MySQL按優先順序排列
- 24. 移位運算符的紅寶石運算符優先級問題
- 25. 按位運算符
- 26. 按位運算符
- 27. 瀏覽器字符集優先順序
- 28. 當指定了dependsOnMethods時,testng未按優先級順序運行
- 29. F#:算符優先
- 30. 運算符優先級和一元運算符的諷刺性
操作的順序將取決於語言。我將['c AND a OR b'](http://www.wolframalpha.com/input/?i=truth+table+c+and+a+or+b)插入Wolfram Alpha,它給了我'( c和a)或b'。另外['c OR a AND b'](http://www.wolframalpha.com/input/?i=truth+table+c+or+a+and+b)給了我'c OR(a AND b) '因此看起來像在Wolfram Alpha中'AND'具有比'OR'更高的優先級。這些是邏輯運算符而不是按位,但我認爲他們會遵循相同的模式。 – NullUserException
@NullUserException我認爲這種間接引發了一個可能有趣的地方:在C和C++中,邏輯操作總是明確地從左到右評估,只要結果是已知的,評估就會結束(所以在&&右側沒有評估如果左側評估爲零;在任何「||」中,如果左側評估爲非零,則不評估右側)。按位運算符優先,並且沒有關於避免評估子表達式的特殊規則。 – Tommy
你可以看到&,^和|作爲分別乘法,加法和最大值的逐位版本。這種理由證明了他們使用最廣泛的優先順序。 – harold