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