Java代码中a初始值为10时x=++a + ++a输出23的原因求解
Java前置自增运算表达式结果解释
你提供的代码如下:
class Example{ public static void main(String[] args) { int a=10; int x; x= ++a + ++a; System.out.println(x); } }
结果产生原理
- 首先明确Java中
++a为前置自增运算符,规则是先对变量执行自增1操作,再返回自增后的数值参与表达式运算 - Java语言规范明确规定算术表达式按照从左到右的顺序依次求值,不存在未定义行为
- 具体执行步骤拆解:
- 初始状态下变量
a的取值为10 - 先计算加号左侧的
++a:a先自增1变为11,返回11作为左侧操作数的取值,此时a = 11 - 再计算加号右侧的
++a:a再次自增1变为12,返回12作为右侧操作数的取值,此时a = 12 - 执行加法运算将两个操作数相加:
11 + 12 = 23,赋值给变量x,因此最终输出结果为23
- 初始状态下变量
注意:该结果仅为Java语言下的固定输出,C/C++等其他语言未明确规定此类表达式的求值顺序,属于未定义行为,结果会随编译器实现发生变化。
内容的提问来源于stack exchange,提问作者sha sha
相关产品推荐
相关产品推荐

