在kotlin repl和kotlin/jvm中:
-
-1 ushr 4
评估268435455
-
-1.ushr(4)
评估0
第一个是正确的,因为-1是0xffffffff,所以0x0ffffffff是268435455,但是什么使第二个不同?
取决于运营商的优先级。在第一种情况下,该操作被解决为(-1) ushr 4
,而在第二种情况下是-(1 ushr 4)
。
这是因为(引用文档(:
infix函数调用的优先级低于算术运算符,类型铸件和rangeto操作员。以下表达式等效:
1 shl 2 + 3
和1 shl (2 + 3)
虽然方法调用的优先级高于-
。