在Kotlin中,为什么IS(-1 USHR 4)不同于-1.USHR(4)



在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 + 31 shl (2 + 3)

虽然方法调用的优先级高于-

最新更新