我能找到的运算符优先级表是:
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence
根据表格,'>>'和'*'是从左到右的关联,''>>'有更高的优先权,所以我想 a>> b * c应解释为(a>> b)* c 但是,我在Firefox中的测试(使用Firebug)告诉我:
0x11 >> 1 .... 8
0x11 >> 1 * 2 .... 4
这让我感到很困惑,如果是16岁呢?
好的,我明白我们总是应该在优先级不明确时使用括号,但应该有规则或解释发生了什么?
答案 0 :(得分:2)
根据您链接的表格,*
的优先级(5)高于>>
(7);在该表中首先列出了更高的优先级,虽然令人困惑,但较低的数字用于表示更高的优先级。
答案 1 :(得分:2)
如果我查看该表,*
运算符的优先级高于>>
,因此*
之前会绑定。它被解释为:
0x11 >> 1 * 2
0x11 >> (1 * 2)
0x11 >> (2)
0x11 >> 2
答案 2 :(得分:1)
根据您链接的表,乘法具有比位移(7)更高的优先级(5)。
从表格的顶部开始:
下表按最高(1)到最低(17)优先顺序排列。
答案 3 :(得分:1)
不,它说*
的优先级高于>>
。 :)