Java中的前后增量和减量[重复]

Posted

技术标签:

【中文标题】Java中的前后增量和减量[重复]【英文标题】:Pre and Post Increment and Decrement in Java [duplicate] 【发布时间】: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”这样的数学表达式? 【参考方案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;

【讨论】:

很好的可视化过程。

以上是关于Java中的前后增量和减量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript基础之算术运算符 前后增量/前后减量运算符 比较运算符逻辑运算符 程序流程控制

Java 增量/减量运算符 - 它们的行为方式,功能是啥?

循环中的预递增/递减与 gcc 和 Visual C 的后递增/递减 [重复]

Java中的字符不会随后增量更新[重复]

Jquery UI Slider 增量和减量

ember组件增量/减量值