2017-09-26 2 views
2

Kotlin des Long.MIN_VALUE == -9223372036854775808, aber wenn ich schreibe:Warum Kotlin falsch: val minT: Long = -9223372036854775808L //Long.MIN_VALUE

val minT: Long = -9223372036854775808L //Long.MIN_VALUE

IDEA sagen, dass es falsch war.

Dmitry Jemerov mir gesagt, dies, weil die - Zeichen in Kotlin nicht Teil der konstant ist, sondern vielmehr der einstellige Minusoperator auf den konstanten Wert angelegt und 9223372036854775808L ist eine größer als der maximal mögliche positive Wert für den Lang Typen.

Aber jetzt, warum Int rechts:

val minI: Int = -2147483648 //Int.MIN_VALUE

Schauen Sie hier:

enter image description here

+0

Ich bin mir nicht sicher, ob ich deine Frage 100% verstehe - hast du erwartet, dass 'val minI: Int = -2147483648' ebenfalls einen Fehler verursacht? –

+1

Hinweis: In der kotlin-stdlib ist diese Konstante definiert als 'public const val MIN_VALUE: Long = -9223372036854775807L - 1L' (Sie können zur Deklaration von 'Long.MIN_VALUE' navigieren). – hotkey

+0

Ja. Ich erwarte 'val minI: Int = -2147483648', um einen Fehler zu erzeugen. Danke für deine Antwort, ich hatte die Konstante des Longs gelesen, und genau das hast du gesagt. Nun, ich weiß 'val val minT: Long = (-9223372036854775807L - 1L)' ist Arbeit, aber es sieht so komisch aus. –

Antwort

0

Ich glaube, sie gebunden wie dieser Wert innerhalb -9223372036854775808 zu 9223372036854775808 fallen müssen, weil von Lang.

Verwandte Themen