2017-09-26 28 views
2

科特林的Long.MIN_VALUE == -9223372036854775808,但是當我寫:爲什麼科特林錯誤:VAL薄荷:龍= -9223372036854775808L //Long.MIN_VALUE

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

IDEA說,這是錯誤的。

梅德Jemerov告訴我,這是因爲在科特林的-標誌是不固定的一部分,而是元減運算符應用於恆定值,並且9223372036854775808L比爲長型的最大可能正值較大的一個。

但是現在,爲什麼int是正確的:

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

看吧:

enter image description here

+0

我不確定我100%瞭解你的問題 - 你是否期望'val minI:Int = -2147483648'也會引發錯誤? –

+1

注意:在kotlin-stdlib中,此常量被定義爲「public const val MIN_VALUE:Long = -9223372036854775807L - 1L」(您可以導航到聲明「Long.MIN_VALUE」)。 – hotkey

+0

是的。我期望'val minI:Int = -2147483648'來提出一個錯誤。感謝您的回答,我讀過了Long的常數,而這正是您所說的。現在,我知道'val val minT:Long =(-9223372036854775807L - 1L)'是工作,但看起來很奇怪。 –

回答

0

我相信他們必然會像數值可能需要回落至9223372036854775808內-9223372036854775808因爲龍的。