【问题标题】:Why kotlin wrong: val minT: Long = -9223372036854775808L //Long.MIN_VALUE为什么kotlin错了:val minT: Long = -9223372036854775808L //Long.MIN_VALUE
【发布时间】: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


【解决方案1】:

我相信他们绑定的值可能需要在 -9223372036854775808 到 9223372036854775808 之间,因为 Long。

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 2020-01-07
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多