2017-09-26 30 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因为龙的。