关于JavaScript的位运算的一个问题,谁能帮我解答一下
发布于 8 年前 作者 muyoucun557 3837 次浏览 来自 问答

var a = 255<<16; var b = 255<<8; var c = 255; console.log( a+b+c ); console.log( 255<<16 + 255<<8 + 255 );

两次输出的结果不一样?这是怎么回事,请知道的人帮我解答一下,谢谢

6 回复

因为 + 号的优先级高于 <<

所以它就变成了255<<271<<263

加上括号会更好理解一些:

255 << (16+255) << (8+255)

所以最终结果就是1069547520

找到原因了:位移运算符的优先级小于加号的优先级。

多用括号,虽然长点,但是谁都不会理解错。

代码首先是给人看的,其次才是运行

回到顶部