long l2 = 32;
当我使用上面的语句时,我没有收到错误(我最后没有使用l
),但是当我使用下面的语句时,我收到此错误:
int类型的文字3244444444超出范围
long l2 = 3244444444;
如果我使用long l2 = 3244444444l;
,则没有错误。
这是什么原因?对于长变量,使用l不是必需的。
答案 0 :(得分:6)
3244444444
被解释为文字整数,但不能适合32位int
变量。它必须是文字长值,因此最后需要l
或L
:
long l2 = 3244444444l; // or 3244444444L
更多信息:
答案 1 :(得分:0)
请注意,虽然在分配给long变量时int文字将自动加宽为long,但在表达
值时,您需要使用显式长文字。大于Integer.MAX_VALUE (2147483647)
(或)
小于Integer.MIN_VALUE (-2147483648)
:
long x1 = 12; //OK
long x2 = 2147483648; // not OK! That's not a valid int literal
long x3 = 2147483648L; // OK