7
long l2 = 32;

当我使用上面的语句时,我没有得到错误(我最后没有使用l),但是当我使用下面的语句时,我得到了这个错误:

int 类型的文字 3244444444 超出范围

long l2 = 3244444444;

如果我使用long l2 = 3244444444l;,则没有错误。

这是什么原因?对于长变量,使用 l 不是强制性的。

4

2 回答 2

7

3244444444被解释为文字整数,但不适合 32 位int变量。它需要是一个文字 long value,所以它需要一个lor L

long l2 = 3244444444l; // or 3244444444L

更多信息:

于 2013-07-19T04:45:19.153 回答
0

请注意,虽然 int 字面量在分配给 long 变量时会自动加宽为 long,但在表达一个值时需要使用显式的 long 字面量

  1. 比...更棒Integer.MAX_VALUE (2147483647)

    (或者)

  2. 小于Integer.MIN_VALUE (-2147483648)

    long x1 = 12; //OK
    long x2 = 2147483648; // not OK! That's not a valid int literal
    long x3 = 2147483648L; // OK
    
于 2013-07-19T04:47:36.563 回答