+= 和 =+ 的区别

IT小君   2021-10-25T02:35:07

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

为什么是这样?

评论(8)
IT小君

a += b是简写a = a + b(但请注意,表达式a只会被评估一次。)

a =+ ba = (+b)的,即指定一元+ba

例子:

int a = 15;
int b = -5;

a += b; // a is now 10
a =+ b; // a is now -5
2021-10-25T02:35:07   回复
IT小君

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

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

int x = 10;

x += 10; // x = x + 10; i.e. x = 20

x =+ 5; // Equivalent to x = +5, so x = 5.
2021-10-25T02:35:08   回复
IT小君

+= → 将右侧添加到左侧

=+→ 不要使用这个。将左侧设置为右侧。

2021-10-25T02:35:08   回复
IT小君

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

2021-10-25T02:35:08   回复
IT小君
x += y 

是相同的

x = x + y

x =+ y

是错误的,但可以解释为

x = 0 + y
2021-10-25T02:35:08   回复
IT小君

这很简单。

x += 1x = x + 1while 一样

x =+ 1将使x具有(正)一的值

2021-10-25T02:35:09   回复
IT小君

一些历史观点:Java 继承了+=C和类似的运算符。在 C 的早期版本(1970 年代中期)中,复合赋值运算符的左侧有“=”,因此

x =- 3;

相当于

x = x - 3;

(除了x只评估一次)。

这引起了混乱,因为

x=-1;

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

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

幸运的是,Java 是在 C 更改为当前语法之后很久才发明的,因此它从未出现过这种特殊问题。

2021-10-25T02:35:09   回复
IT小君

因为=+不是 Java 运算符。

2021-10-25T02:35:09   回复