关于Long类型声明的问题

mkf_wk 2010-03-21 10:39:01
long l1 = 2147483647; //对
long l2 = 2147483647L; //对
long l3 = 2147483648L; //对
long l4 = 2147483648; //错



为什么呢
...全文
471 15 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
超出了范围

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧