【问题标题】:operator precedence in java - getting the wrong outputjava中的运算符优先级 - 得到错误的输出
【发布时间】:2015-10-13 21:47:22
【问题描述】:

这是我目前的代码

public class Test1 
{
    public static void main(String[] args) {
        int result = 13 - 3 * 6 / 4 % 3;
        System.out.print(result);
    }
}

我得到的输出是 12,但它不应该是 -13 吗?

【问题讨论】:

  • 为什么应该是-13
  • @SotiriosDelimanolis -3 * 6 是 -18,-18 / 4 是 -4(它是 int,所以它会去掉小数部分)。 -4 % 3 是 -1,-1 * 13 是 -13 不是吗?
  • 说真的,如果您认为运算符优先级是错误的,至少请指定您认为的优先级应该如何......
  • 为什么是-3?这不是一元 -
  • @popovitsj 我在评论中做了一些原因,它不允许我把它放在 OP 中

标签: java operator-keyword operator-precedence


【解决方案1】:

如果我们添加澄清括号,表达式变为:

13 - ((3 * 6 / 4) % 3);

由于整数除法,除法的结果变为4。 然后模结果为 1。 所以最终结果是 12。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2011-12-28
    • 2021-10-25
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多