[quote=引用 17 楼 u013045639 的回复:] 不推荐用这种写法,可读性差
这个问题反编译一下就能明白 int a=3; a+=++a; 反编译如下: 而int a=3; a+=a++; 反编译如下: 仔细比较一下就明白了,如果看不懂就去查一下虚拟机的指令
++a 和 a++ int a = 3; a+=a++ => 先算a+=a此时为6,a再自增 a+=++a =>先是右边a自增(a为4),再计算a+=
对于a = a++,大家都知道,a++参与运算的话,是a先参与运算,再执行a自增操作。但这里尴尬的是,++的优先级是高于=的,因此,java的处理方法是,会在内存里先开辟一个临时空间,存放a的值,然后a自增,之后再从临时空间拿出来a,赋给a。很明显c是没有这个机制的
不推荐用这种写法,可读性差
int i = 3; i = i++ + i;
62,615
社区成员
307,307
社区内容
加载中
试试用AI创作助手写篇文章吧