关于a+=b 的小问题,请大家跟我解决一个小疑问

xiaolai_xiaolai 2017-09-30 06:50:17



请大家帮我解释下 为什么 第一个a 打印的结果是10 , 让int 类型的a加上0.5既不报错 也加不上去
第二个a就能正常打印a的结果为11.
感激不尽.
...全文
471 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小公牛123 2017-11-03
  • 打赏
  • 举报
回复
int是整型 就是整数 是截取取值 不是进一法也不是四舍五入 也就是说不管你的数小数点后有多少 输出时只取小数点前的部分
qq_40312447 2017-10-02
  • 打赏
  • 举报
回复
你第一个a是一个int类型,0.5是double类型。+=这个运算符本身就隐含了有一个强制转换的功能……
qq_40312447 2017-10-02
  • 打赏
  • 举报
回复
你第一个a是一个int类型,0.5是double类型。+=这个运算符本身就隐含了有一个强制转换的功能……
小公牛123 2017-10-01
  • 打赏
  • 举报
回复
这个你需要了解下自动类型转换和强制类型转换 当大的转换成小的就会发生强制类型转换 比如你 这个 a += 0.5 就相当去a = a + 0.5; 正常结果应该10.5但是这个是double类型所以会发生强制类型转换 而强制类型转换是一种截取值 也就是 当强制类型转换成整型时 10.5 就会截取到10 最后 输出的值就是10 而 a+= 1 结果就是 11 是整型不需要什么转换 也没有什么错误自然就输出 11 了
shangcunshanfu 2017-10-01
  • 打赏
  • 举报
回复
a+=0.5编译器在编译时是这样的,a=(int)(1+0.5),再根据楼上说的,答案就出来了。
李德胜1995 2017-09-30
  • 打赏
  • 举报
回复
a+=0.5计算后的10.5会是double型的,会强转为int型的,10.5强转为int型等于10。。。。

62,625

社区成员

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

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