前置自增运算与后置自增运算合的运算结果很奇怪
来源:1-1 运算符概述
Zach_Lin
2021-11-27 12:20:44
问题描述:
如题我将前置与后置运算结果相加并赋值给变数num,但结果与我预期的不同,应当是4 + 5 = 9,先前编写c代码时也有过这个问题(编译器的Undefined Behaviour问题)
我的问题是(++a)+(a++)的返回值该怎么判断? 或者存在跟c/c++一样的编译器问题,造成结果无法确定
相关代码:
public class Main { public static void main(String[] args) { int a = 4; a = (++a) + (a++); // a=10 Undefined Behaviour? System.out.println("a = "+a); a = (a++) + 4; System.out.println("a = "+a); a += (++a); System.out.println("a = "+a); a -= (a--); System.out.println("a = "+a); } }
尝试过的解决方式:
我去查看java文档确定运算顺序始终是左至右,并没有像c/c++有例外状况。
相关截图:
现在的想法是
1回答
同学您好,
同学所描述的意思是这段代码a = (++a) + (a++);结果应该为9,而不是10对吗?
a = (++a) + (a++);将这段代码分解计算:
++a是先进行自增,计算得出,值为5
a++是先计算后自增,这段代码应该是5+4等于9再进行自增,也就是10
在java中并不会出现同学所描述的情况。
祝同学学习愉快~
相似问题