社区
Java SE
帖子详情
关于Long类型声明的问题
mkf_wk
2010-03-21 10:39:01
long l1 = 2147483647; //对
long l2 = 2147483647L; //对
long l3 = 2147483648L; //对
long l4 = 2147483648; //错
为什么呢
...全文
489
15
打赏
收藏
关于Long类型声明的问题
long l1 = 2147483647; //对 long l2 = 2147483647L; //对 long l3 = 2147483648L; //对 long l4 = 2147483648; //错 为什么呢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
longtenggdf
2010-03-22
打赏
举报
回复
[Quote=引用 5 楼 bugsmaker 的回复:]
2楼正解
int 最大2^31-1=2147483647
long l1 = 2147483647;是把int型转型成long型给l1
而2147483648无法容纳在int型里,只能用long型的描述方式,所以只能用2147483648l或2147483648L来描述,所以long l4 = 2147483648;出错
[/Quote]
这里确实 是把 2147483647 按 int 编译了。但是这里把一个大类型变成了小类型,有点疑惑。
「已注销」
2010-03-22
打赏
举报
回复
“2147483647”本身默认为是个int类型的。同时这个数又是int类型的最大值.
long l1 = 2147483647; //它之所以对,是因为它把2147483647默认为int类型,转换类型之后赋值给long类型的L1
long l2 = 2147483647L; //它之所以对,是因为它把2147483647L当成一个long类型的数,赋值给long类型的L2
long l3 = 2147483648L; //它之所以对,是因为 2147483648 本身就处在long类型的范围内,当成一个long类型的数,赋值给long类型的L3
long l4 = 2147483648; //错 它之所以错,是因为2147483648 这个数默认是INT类型的,但是它超出了INT类型的范围,与L4无关。
keeya0416
2010-03-22
打赏
举报
回复
2147483647在int范围内,声明的时候自动类型转换成long了
而2147483648就不在int范围了。声明的时候必须制定long类型。
ladybirds2008
2010-03-22
打赏
举报
回复
[Quote=引用 8 楼 ark032425 的回复:]
引用 5 楼 bugsmaker 的回复:
2楼正解
int 最大2^31-1=2147483647
long l1 = 2147483647;是把int型转型成long型给l1
而2147483648无法容纳在int型里,只能用long型的描述方式,所以只能用2147483648l或2147483648L来描述,所以long l4 = 2147483648;出错
正解
[/Quote] dddddd
Atticfaith2010
2010-03-22
打赏
举报
回复
整数默认为INT型,而要转为LONG型则要向下转型,否则会出错
yufenghua
2010-03-22
打赏
举报
回复
对于整数,如果不加申明,系统会默认为int.而最后一个超出了范围,所以要加L指明是长整形。。。
SambaGao
2010-03-22
打赏
举报
回复
[Quote=引用 2 楼 soton_dolphin 的回复:]
第四个是个INT,不是LONG,如果声明LONG TYPE,必须在后面加L/l
[/Quote]
不错。。。。
而双精度默认是double型
Ark032425
2010-03-22
打赏
举报
回复
[Quote=引用 5 楼 bugsmaker 的回复:]
2楼正解
int 最大2^31-1=2147483647
long l1 = 2147483647;是把int型转型成long型给l1
而2147483648无法容纳在int型里,只能用long型的描述方式,所以只能用2147483648l或2147483648L来描述,所以long l4 = 2147483648;出错
[/Quote]
正解
hjh811
2010-03-21
打赏
举报
回复
[Quote=引用 5 楼 bugsmaker 的回复:]
2楼正解
int 最大2^31-1=2147483647
long l1 = 2147483647;是把int型转型成long型给l1
而2147483648无法容纳在int型里,只能用long型的描述方式,所以只能用2147483648l或2147483648L来描述,所以long l4 = 2147483648;出错
[/Quote]学习下,,确实还没留意过。。
poFate
2010-03-21
打赏
举报
回复
恩 不错。。。。。。。
没遇到过
BugsMaker
2010-03-21
打赏
举报
回复
2楼正解
int 最大2^31-1=2147483647
long l1 = 2147483647;是把int型转型成long型给l1
而2147483648无法容纳在int型里,只能用long型的描述方式,所以只能用2147483648l或2147483648L来描述,所以long l4 = 2147483648;出错
mkf_wk
2010-03-21
打赏
举报
回复
我的意思是,同样声明的都是LONG类型,为什么2147483647及一下可以不用加L,而大于2147483647的数值后面要加L
yeah_aly
2010-03-21
打赏
举报
回复
没有提示错误类型吗
soton_dolphin
2010-03-21
打赏
举报
回复
第四个是个INT,不是LONG,如果声明LONG TYPE,必须在后面加L/l
soton_dolphin
2010-03-21
打赏
举报
回复
超出了范围
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章