1 java
我有一些代码:
int m = 4;
int result = 3 * (++m);
Run Code Online (Sandbox Code Playgroud)
和
int m = 4;
int result = 3 * (m++);
Run Code Online (Sandbox Code Playgroud)
执行m为5后,结果在第一种情况下为15,但在第二种情况下,m也为5,但结果为12.为什么会这样?它不应该是至少相同的行为?
我特别谈到优先规则.我一直认为这些规则表明,parantheses比一元运算符具有更高的优先级.那么为什么不首先评估这些问题中的表达呢?
否 - 因为在第一种情况下,结果是3乘以" m在它增加后的值",而在第二种情况下,结果是3乘以" m在它增加之前的初始值".
这是预增量("增量,表达式的值是增量后的值")和后增量之间的正常差异("记住原始值,然后增加;表达式的值是原始值").
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |