【问题标题】:Why is the output 30 and not 31? [duplicate]为什么输出是 30 而不是 31? [复制]
【发布时间】:2018-01-16 10:28:07
【问题描述】:
public class Class1 {

    public static void main(String[] args) {
        int myFirstNumber =20;
        int mySecondNumber=10;
        System.out.println(myFirstNumber+++mySecondNumber);
    }
}

mySecondNumber 应该递增到 11,从而得出总和 31

【问题讨论】:

  • 为什么你认为“myFirstNumber+++mySecondNumber”的意思是“myFirstNumber+(++mySecondNumber)”而不是“(myFirstNumber++)+mySecondNumber”?你的证据是什么?输出已经反驳了你。

标签: java increment


【解决方案1】:

是Java解析器解释

+++

作为(myFirstNumber++)+,而不是+(++mySecondNumber)

我们使用贪婪这个词来描述这种行为;即解析器尽可能多地使用输入,以形成有意义的表达式。

请放心,println 之后,myFirstNumber 将是 21。

【讨论】:

  • 我现在明白了。我刚刚检查了 myFirstNumber 并且它已经增加了。谢谢。
  • @Chronic - 另一种看待这个问题的方式是,Java 编译器会惩罚你编写不可读的代码。 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多