2017-06-25 5 views
2

私はkotlinでJVM用の高速jsonパーサーを作成しようとしています。kotlinではリテラル "-9223372036854775808"(最小64ビット符号付き整数)が受け入れられないのはなぜですか?

私はこの問題を発見しましたが、これはバグかこれの背後にある正当な理由であるとは確信していません。

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

「-9223372036854775807L」が受け入れられ、面白いです...正確なメッセージが提供されていれば役立つでしょう。 – zerkms

答えて

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 
関連する問題