+ =和= +之间的差异

我错了+ = = = +一次到多次,我想我一直都忘了,因为我不知道这两者之间的区别,只有那一个给了我期望它的值,而另一个没有。

为什么是这样?

a += ba = a + b简写(尽管注意表达式a只会被评估一次。)

a =+ ba = (+b) ,即将a = (+b)的一元+分配给a

例子:

 int a = 15; int b = -5; a += b; // a is now 10 a =+ b; // a is now -5 

+=是复合赋值运算符 – 它将RHS操作数添加到LHS操作数的现有值。

=+只是赋值运算符后跟一元+运算符。 它将LHS操作数的值设置为RHS操作数的值:

 int x = 10; x += 10; // x = x + 10; ie x = 20 x =+ 5; // Equivalent to x = +5, so x = 5. 

+= – >将右侧添加到左侧

=+ – >不要使用它。 将左侧设置为右侧。

a += b等于a = a + ba =+ b等于a = (+b)

它很简单.x + = 1是x = x + 1而x = + 1会使x的值为1(正)

 x += y 

是相同的

 x = x + y 

 x =+ y 

是错的,但可以解释为

 x = 0 + y 

因为=+不是Java运算符。

一些历史观点:Java从Cinheritance了+=和类似的运算符。在C的早期版本(20世纪70年代中期),复合赋值运算符在左边有“=”,所以

 x =- 3; 

相当于

 x = x - 3; 

(除了x只评估一次)。

这引起了混乱,因为

 x=-1; 

将减少x而不是为其赋值-1,因此语法被更改(避免了必须用空格包围运算符的恐怖: x = -1; )。

(我在例子中使用了-==-因为早期的C没有一元+运算符。)

幸运的是,Java在C改为当前语法之后很久就发明了,因此它从未遇到过这个特殊问题。