2个short类型的数据相加不能是short型了?

acboboly 2006-01-04 02:57:05
short x =5;
short y=6;
short z=x+y;//compile error
变量z必须定义为int型?
5+6的范围并没有超过short型的范围?为什么不能相加之后还是short类型的?
是不是无论什么类型的两个数相加,结果最小的类型要是int????
...全文
1992 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kjj1981 2006-01-08
  • 打赏
  • 举报
回复
表达式自动提升为int
ouyang5310833 2006-01-08
  • 打赏
  • 举报
回复
上面一些同仁回答得很好,建议不要在这些小问题上纠缠,继续往下学习吧。祝你成功!
chmmmm 2006-01-08
  • 打赏
  • 举报
回复
顶起
acboboly 2006-01-07
  • 打赏
  • 举报
回复
哦,呵呵!谢谢!^_^
bluesmile979 2006-01-06
  • 打赏
  • 举报
回复
这事儿是挺郁闷。精度小于int的数值运算的时候都回被自动转换为int后进行计算。只能自己再转回去。
cuiyingfeng 2006-01-06
  • 打赏
  • 举报
回复
Java 程序语言提供了一些可以作用在整数值上的操作数:
 * 比较运算子,得到 boolean 型别的值:
   * 数值比较运算子 <,>=,>,和 >=(§15.20.1)
   * 数值相等运算子 == 和 !=(§15.21.1)

 * 数值运算子,得到 int 或 long 型别的值:
   * 单元加减运算子 + 和 -(§15.15.3,§15.15.4)
   * 乘除运算子 *,/,和 %(§15.17)
   * 加减运算子 + 和 -(§15.18.2)
   * 递增运算子 ++,前置(§15.15.1)和后置(§15.14.1)两者
   * 递减运算子 --,前置(§15.15.2)和后置(§15.14.2)两者
   * 有号和无号移位运算子 <<,>>,和 >>>(§15.19)
   * 位补码运算子 ~(§15.15.5)
   * 整数位元运算子 &,|,和 ^(§15.22.1)
如果整数运算子,拥有最少一个型别 long 的操作数时,那这运算会以 64-位精度来实现,而这数值运算子的结果是型别 long 的。如果其它的操作数不是 long,它会先被以数值升级(§5.6)宽化(§5.1.4)到型别 long。否则,运算会以 32-位精度来实现,而这数值运算子的结果是型别 int 的。如果有操作数不是 int,它会先被以数值升级宽化到 int 型别。
yuzl32 2006-01-06
  • 打赏
  • 举报
回复
x+y 相加过程中可能会转换为int,这时你必须强制转换回short才行
即:short z=x+y 改为;short z=(short)(x+y)
acboboly 2006-01-06
  • 打赏
  • 举报
回复
顶!

62,629

社区成员

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

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