0

この数値は長い範囲に収まるのに、なぜエラーが発生するのでしょうか:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The literal 8751475143 of type int is out of range 
4

3 に答える 3

11

成功する

long n = 8751475143L;

L長いリテラルにします

デフォルトではint

整数リテラルは、ASCII 文字の L または l (エル) の接尾辞が付いている場合、long 型です。それ以外の場合は int 型です (§4.2.1)。文字 l (エル) は数字の 1 (1) と区別しにくいことが多いため、接尾辞 L が推奨されます。[..]

于 2012-05-29T14:18:56.347 に答える
6

リテラルを解析するとき、代入のターゲットは考慮されないため、L サフィックスが必要です。

long n = 8751475143L;

ほとんどの場合、いくつかの注目すべき例外がありますが、式の型は、そのコンテキストをあまり参照せずに決定されます。したがって、 JLS のセクション 3.10.1 に従って、整数リテラルは接尾辞orintがない限り型であり、型の整数リテラルの範囲はもちろんその lf の範囲に制限されます。lLintint

于 2012-05-29T14:19:06.143 に答える
0

特に指定しない限り、Java のすべての数値はintegers として扱われます (または、小数点記号を使用すると、floats として扱われます)。

だから、あなたが書くなら

long i = 1234;

java は数値1234を としてinteger処理し、型キャストをlong行います。

ただし、次のように入力すると:

long n = 8751475143;

は範囲外のため、Java は8751475143として扱うことができません。最後に「L」を追加して、integer意味したことを指定する必要があります。long

long n = 8751475143L;

于 2012-05-29T14:25:37.533 に答える