java - 关于简单算术运算的问题

标签 java math

请看一下这段代码:

    int a = 5, b = 7;
    System.out.println(++a + b-- - a-- * --b);

它输出-17。但我不明白为什么。我认为输出应该是-19。因为首先我们进行乘法 5*6 = 30,然后 5 + 6 = 11,最后 11-30 = -19。 有人能告诉我为什么输出是-17吗?

最佳答案

这里是使用 Java 中操作顺序的解释:

int a = 5, b = 7;

++a + b-- -  a-- * --b
  6 + 7   - (6 * 5)
  13 - 30
  -17

第一项的计算结果为 6,因为 ++a 表示先递增 a 然后再计算。另一方面,b-- 的计算结果为 7,因为后缀 -- 出现在之后 b. 。对于乘法中涉及的两项,由于 Java 中的运算规则的顺序,我们将它们放在括号中。同样的逻辑也适用于此,我们得到的产品为 30。

关于java - 关于简单算术运算的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53645195/

相关文章:

java - 在 Heroku 上上传文件

java - 为泛型类型调用重载方法 'equals'

javascript - 布料仿真系统并行化算法?

在两个集合之间映射元素的算法

actionscript-3 - AS3 笛卡尔坐标的极坐标

javascript - 如何测试一条线是否相对于另一条线顺时针旋转?

android - 从垂直轴旋转的角度

java - 将 java 转换为 actionscript 以使用 flash builder 有多容易?

java - ActiveMQ队列和消费者

java - 如何使用hdfs中存储的jceks文件连接到aws sqs队列和s3