5.5 | 0 === 5
如何运作?
在此上下文中,| 0
是否为OR
我怀疑它是什么?如果是这样,为什么它会在这一点之后切断一切?
答案 0 :(得分:11)
按位运算符总是将操作数强制转换为32位整数。
该操作被解释为
5.5 | (0 === 5)
是
5.5 | false
被胁迫
5.5 | 0
现在5.5
被转换为32位整数,所以我们有
5 | 0
是5
。
关系运算符比按位运算符更紧密地绑定,这可能令人困惑。如果要比较按位运算符的结果(与添加或乘法不同),则必须明确括号。
答案 1 :(得分:4)
|
执行运算符是按位OR运算,隐式地将每个操作数转换为32位整数。在Pointy notes时,5.5 | 0 === 5
被解析为5.5 | (0 === 5)
,其评估结果为5.5 | false
。
...
5.让lnum成为ToInt32(lval) 6.让rnum为ToInt32(rval)。
7.返回将按位运算符@应用于lnum和rnum的结果。结果是带符号的32位整数。
由于任何整数都是X | 0
→X
,因此有效地删除了该数字的任何小数部分。
答案 2 :(得分:4)
它不等于真,它不等于假。
5.5 | 0 === 5
返回
5