A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. short s=1; s= s +1; 和s+=1;
  2. 前者损失精度,后者不报错,这是为什么?
  3. char c='1'; c=c+1;会报错,损失精度这个我明白
  4. 可是char c=1+'1';不会报错 ,这又是为什么?
复制代码

评分

参与人数 1黑马币 +2 收起 理由
sunshine429 + 2 很给力!

查看全部评分

5 个回复

正序浏览
个人认为,只要存在向下转型的表达式,都会报错,需要强制转换才能实现。对于“+=”操作,系统会自动执行类型转换操作,等价于s=(short)s+1。
回复 使用道具 举报
可能因为‘1’也是字符类型,所以+1没事
回复 使用道具 举报
以取值范围的大小排列数据的基本类型. :double>float>long>int>char>short>byte   s+1和c+1 系统会默认转化为int类型,因为int大于char和short  会损失精度所以会报错!
回复 使用道具 举报
以取值范围的大小排列数据的基本类型. :double>float>long>int>char>short>byte   s+1和c+1 系统会默认转化为int类型,因为int大于char和short  会损失精度所以会报错!
回复 使用道具 举报
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马