Java长号太大错误? [英] Java long number too large error?

查看:137
本文介绍了Java长号太大错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么我的int号太大而long被分配到min和max?

Why do I get an int number is too large where the long is assigned to min and max?

/*
long: The long data type is a 64-bit signed two's complement integer.
It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of         9,223,372,036,854,775,807 (inclusive).
Use this data type when you need a range of values wider than those provided by int.
*/
package Literals;

public class Literal_Long {
     public static void main(String[] args) {
        long a = 1;
        long b = 2;
        long min = -9223372036854775808;
        long max = 9223372036854775807;//Inclusive

        System.out.println(a);
        System.out.println(b);
        System.out.println(a + b);
        System.out.println(min);
        System.out.println(max);
    }
}


推荐答案

全部java中的文字数字默认为 ints ,其范围 -2147483648 2147483647 包含。

All literal numbers in java are by default ints, which has range -2147483648 to 2147483647 inclusive.

您的文字超出此范围,因此要进行此编译,您需要指明它们 long 文字(即后缀 L ):

Your literals are outside this range, so to make this compile you need to indicate they're long literals (ie suffix with L):

long min = -9223372036854775808L;
long max = 9223372036854775807L;

请注意,java支持大写 L 和小写 l ,但我建议使用小写 l ,因为它看起来像 1

Note that java supports both uppercase L and lowercase l, but I recommend not using lowercase l because it looks like a 1:

long min = -9223372036854775808l; // confusing: looks like the last digit is a 1
long max = 9223372036854775807l; // confusing: looks like the last digit is a 1

Java语言规范相同的


如果整数文字后缀为ASCII字母L或l(ell),则整数文字的长度为long;否则它的类型为int(§4.2.1)。

An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).

这篇关于Java长号太大错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆