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

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

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

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

这被标记为kotlin KT-17172中的一个bug。

正如你可以看到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 
Interesting Posts