【问题标题】:Pre and Post Increment and Decrement in Java [duplicate]Java中的前后增量和减量[重复]
【发布时间】:2015-05-21 06:14:58
【问题描述】:

后天是我的计算机 (JAVA) 考试,我在上面的标题中有一个大问题。我了解 post 和 pre 递增和递减的含义。但是当事情涉及到一个复杂而冗长的陈述时,我不明白该怎么做。下面是此类问题的一个示例。

class java_1
{ 
  public void main()
{
int x = 4;
x += x++ - --x + x + x--;
}
}

你明白我所说的复杂陈述的意思。该语句只包含一个变量,一次又一次地递增和递减,我在这里感到困惑。你能帮我解决我的困惑吗?另外,请给出上述代码的答案。

【问题讨论】:

  • 请先阅读:How do I ask a good question?。另一方面,试一试,调试它,你就会看到。顺便说一句,没有人应该在生产代码中使用这种操作,因为没有人会理解它。
  • 如果你在计算机课上什么都没学到,那就写“不要写这样的代码”。
  • 这个问题的答案肯定是“这段代码绝对没有检测到”。
  • 检查您对运算符优先级的理解是一个有趣的问题,但如果您在现实中找到类似的东西,您的第一个解决方案应该是去找您的老板并解雇编写它的人。
  • 如何计算像“1 + 2 - 3 * 4 + 5 / 6 - 7 - 8 + 9”这样的数学表达式?

标签: java increment post-increment decrement pre-increment


【解决方案1】:

a += b; 类似于 a = a + b。使用这个假设我们可以重写

x += x++ - --x + x + x--;

作为

x = x + (x++ - --x + x + x--);

现在让x = 4 计算右侧(从左到右)

x + (x++ - --x + x + x--) 

4 + (x++ - --x + x + x--) 
^                         //still x = 4

4 + (4 - --x + x + x--)   
     ^                    //x++ use current value (4), then increment x to 5

4 + (4 - 4 + x + x--)
         ^                //--x decremented to 4, then use current value (4)

4 + (4 - 4 + 4 + x--)     
             ^            //still x = 4

4 + (4 - 4 + 4 + 4)       
                 ^        //x-- read current value (4), then decrement x to 3

所以我们得到了

x = 4 + (4 - 4 + 4 + 4);

意思是

x = 12;

【讨论】:

  • 很好的可视化过程。
猜你喜欢
  • 2015-12-21
  • 2014-12-09
  • 2019-03-27
  • 2016-02-02
  • 1970-01-01
  • 2015-05-03
  • 2017-04-30
  • 2013-07-15
  • 2014-02-11
相关资源
最近更新 更多