• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
夜夜夜
博客园    首页    新随笔    联系   管理    订阅  订阅

类型转换

类型转换问题

short s1 = 1; s1 = s1 + 1L;与short s1 = 1; s1 += 1L;

为何前者会出错,而后者不会?原因如下:

第一种方式:

short s1 = 1; s1 = s1 + 1;需强行转化

自动类型提升
:当分析表达式时,C/C++/Java会自动提升各个byte 型或short型的操作数到int 型。  
根据自动类型提升,我们知道,s1 (short型)+ 1(int型),结果为(int),将int赋值给short,会损失精度,当然不可以了。

第二种方式:
short s1 = 1; s1 += 1;(可以正确编译)
自加没有自动类型提升问题

由于+=运算符有自加功能,定义short s1 = 1;时,开辟了一个空间,当通过+=运算符运算时,只是在原来的栈中进行运算;不需强行转化;

参考:http://topic.csdn.net/u/20080709/21/0f035f88-752f-4284-a454-fabbdee802e2.html

posted on 2012-09-03 19:25  夜夜夜  阅读(87)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3