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

标签 kotlin number-literal

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

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

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

最佳答案

这在 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

关于kotlin - 为什么 kotlin 不接受文字 "-9223372036854775808"(最小 64 位有符号整数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44743364/

相关文章:

ruby - 以 `0` 为前缀的数字文字

c - C 中的编号 622.08E6 解释

java - 数字文字后缀的编码约定?

lambda - 在 Kotlin 中将函数传递给函数

spring-boot - WebClient 的 bodyToMono 关于空体预期行为

android - 如果参数不为 null,我如何告诉 kotlin 函数不返回 null?

java - 如何模拟包含可能引发 NPE 的变量的类

java - 用 Kotlin 编写的 Android 库,为 Java 应用程序提供支持