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

Posted

技术标签:

【中文标题】为啥 kotlin 不接受文字“-9223372036854775808”(最小 64 位有符号整数)?【英文标题】:Why the literal "-9223372036854775808" (min 64 bit signed integer) is not accepted by kotlin?为什么 kotlin 不接受文字“-9223372036854775808”(最小 64 位有符号整数)? 【发布时间】:2017-11-28 07:52:44 【问题描述】:

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

我发现了这个问题,我不确定这是一个错误或任何好的原因。

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

【问题讨论】:

并且-9223372036854775807L 被接受了,很有趣...顺便说一句,如果提供了确切的消息会很有帮助。 【参考方案1】:

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

您可以使用以下代码查看标准库:

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

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

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

【讨论】:

以上是关于为啥 kotlin 不接受文字“-9223372036854775808”(最小 64 位有符号整数)?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Kotlin 不支持“三元运算符”[关闭]

为啥 Kotlin 不需要明确地 try 和 catch

为啥 Kotlin 允许编写不带参数的 main 函数?

为啥 CheckBox 检查不以编程方式与 Kotlin 一起工作?

为啥从网上复制的东西到WORD里面文字格式就变了,显示乱码了呢

为啥 kotlin multiplatform 不执行和导出 iOS 框架?