小憨憨不敢791 2021-12-29 16:16 采纳率: 80%
浏览 81
已结题

为什么最后的答案等于18,我想知道具体的过程

int x=5*3;
int y=x+5/x+3
System.out.println(y);

  • 写回答

9条回答 默认 最新

  • 於黾 2021-12-29 16:21
    关注

    5/x,5和x都是int型,整数除法没有小数,结果等于0
    剩下15+3为什么是18不用讲吧
    -==-=-
    这里一个重要的知识点,必须记牢:
    一个运算,或者说表达式,它的结果是跟参与运算的最大的类型匹配的
    比如一个long+int,结果是long;double+int,结果是double
    注意:运算是分步骤的,那么每个中间结果类型是根据它所在的步骤相关的。假如要计算一个double+int/int,那么除法优先级高,要先计算,两个int相除类型还是int,最终就会丢失精度。
    -=-=-=
    如果想让除法不丢失精度,那么两种办法
    1.直接强制转换
    比如int a=1,b=2;
    要计算a/b,可以这样c=(double)a/b
    2.利用上述规则,构造一个表达式,让结果自动转换类型:a*1.0/b,a先乘以1.0这个double型,结果就变成double类型了,再除以b就是double型除以int型,最终结果还是double型,不丢失精度

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(8条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月30日
  • 已采纳回答 12月29日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?