为什么kotlin不接受文字“-9223372036854775808”(最小64位有符号整数)?

时间:2017-06-25 05:04:38

标签: kotlin number-literal

我正在尝试在kotlin中为JVM编写一个快速的json解析器。

我发现了这个问题,我不确定这是一个错误或背后的任何好理由。

val x: Long = -9223372036854775808L  // compile error

1 个答案:

答案 0 :(得分:4)

这被标记为kotlin KT-17172中的错误。

你可以使用下面的代码看到stdlib:

public const val MIN_VALUE: Long = -9223372036854775807L - 1L

你还记得kotlin中的一元算子-吗?如果将MIN_VALUE划分为特殊部分,您可能会清楚地看到它。例如:

val x: Long = -(9223372036854775808L);
//              ^--- the value overflow since the MAX_VALUE is 9223372036854775807L