java long的赋值_java赋值问题int long short

语句1longl=0xffffffffff;//编译结果:整数值太大语句2longl=0xffffffffffL;//编译结果:成功从这个例子可以看出:在编译第一个语句时,系统已经把一个整数%默认成了类型int%,然后用...

语句1 long l=0xffffffffff; //编译结果:整数值太大

语句2 long l=0xffffffffffL; //编译结果:成功

从这个例子可以看出:在编译第一个语句时,系统已经把一个整数%默认成了类型int%,然后用int型数值0xffffffffff给long型变量l赋值

语句3 short s=100; //编译成功

这个语句中100是不是也被默认成了int,如果是,为什么一个int型数据可以赋值给short型而不没有损失精度?如果不是,为什么在语句1中数值却要被默认成int型?百思不解,请高手指教。

其实以前我一直认为数值在编译时是没有数据类型之分的,只有当它赋值给常量的时候才有了数据类型的分别,例如int a=50;50就是一个数,不属于任何数据类型,而常量a才有类型,它属于int型。

或者换个角度说,所有基本数据类型从本质上说只有存储方式的和存储空间的区别,与数值无关都是0和1而已。

可是自从遇到上面那个问题后我迷茫了,难道系统遇到一个数值时候要先给它一个临时空间,然后从这个临时空间里赋值到常量所在的空间,如果真是这样,系统分配临时空间的规则是什么?求解~

我相当于提出了两个问题,如果告诉我一个也请说出来,不胜感激,在线等

遗憾的是百度知道不能讨论,谢谢你们的回答,不过我想你们并没明白我的意思,语句1的报错原因我当然知道,我想问的不是它为什么错;语句3的赋值不能超过-32768——32767的范围,这也不是我想问的问题,我想问的不是语法问题,而是编译原理

总结下我的意思1、long型赋值时把数值默认成int型(不加L时)

2、short型赋值时把数值默认成int型

3、int型不能向short型直接转换

对于第一条我觉得是对的,事实上经过检验对double常量直接赋整数值时,也是把数值先默认成int型,由此可知第二条肯定也是对的,第三条无可否认也是对的,问题在于第二条和第三条是矛盾的啊~~~

另外我的问题中好像把变量a说成常量a了,汗

我再加10分 有能教我的朋友吗 谢谢了

展开

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值