如何求解包含后自增、后自减运算符的Java表达式?
解析Java表达式
i += i++ + i-- + i-- 的输出结果 // Java program class HelloWorld { public static void main(String[] args) { int i = 5; i += i++ + i-- + i--; System.out.println(i); } }
这段代码的输出结果是21,核心逻辑在于Java中*后自增(post-increment)和后自减(post-decrement)*的执行规则:
- 后自增/自减运算符(
i++、i--)会先返回变量的当前值,再对变量本身进行增减操作 - 计算
i += i++ + i-- + i--时,所有参与加法运算的i都会先取初始值5参与计算,之后才依次执行自增自减的变量修改
具体运算拆解:
- 初始状态:
i = 5 - 计算右侧加法表达式:
i++ + i-- + i--先取三个当前值5,总和为5 + 5 + 5 = 15 - 执行后自增自减操作:
i++执行后,i 变为6i--执行后,i 变为5- 第二个
i--执行后,i 变为4
- 执行
i += 15:此时i的当前值是4,最终结果为4 + 15 = 21
如果错误认为自增自减会影响同一表达式中后续的取值,可能会得出19的错误结果,但实际上后自增自减的变量修改是在取值之后才发生的,不会干扰同一表达式内其他位置的变量取值。
内容的提问来源于stack exchange,提问作者Nikhil
相关产品推荐
相关产品推荐

