【发布时间】:2017-09-26 09:42:27
【问题描述】:
Kotlin 的 Long.MIN_VALUE == -9223372036854775808,但是当我写的时候:
val minT: Long = -9223372036854775808L //Long.MIN_VALUE
IDEA 说错了。
Dmitry Jemerov 告诉我这是因为 Kotlin 中的 - 符号不是常量的一部分,而是应用于常量值的一元减号运算符,并且 9223372036854775808L 比 Long 类型的最大可能正值大一。
但是现在,为什么 Int 是对的:
val minI: Int = -2147483648 //Int.MIN_VALUE
看这里:
【问题讨论】:
-
我不确定我是否 100% 理解您的问题 - 您是否期望
val minI: Int = -2147483648也会引发错误? -
注意:在 kotlin-stdlib 中,此常量定义为
public const val MIN_VALUE: Long = -9223372036854775807L - 1L(您可以导航到Long.MIN_VALUE的声明)。 -
是的。我希望
val minI: Int = -2147483648会引发错误。谢谢您的回答,我已经阅读了 Long 的常量,这正是您所说的。现在,我知道val val minT: Long = (-9223372036854775807L - 1L)是工作,但它看起来很奇怪。
标签: intellij-idea kotlin