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基础之算术运算符 前后增量/前后减量运算符 比较运算符逻辑运算符 程序流程控制