14

在使用 C++ 编程时,我经常混淆“+=”和“=+”,前者是我真正的意思的运算符。Visual Studio 似乎接受了这两种方法,但它们的行为不同,并且是我的许多错误的来源。我知道 a += b 在语义上等价于 a = a+b,但是 "=+" 有什么作用呢?

4

4 回答 4

19

=+是真的= +(赋值和一元运算+符)。

为了帮助您记住+=,请记住它先进行加法,然后再进行赋值。当然这取决于实际的实现,但它应该是针对原语的。

于 2013-10-17T12:06:52.263 回答
14

a =+ b手段a = +b手段a = b

于 2013-10-17T12:07:13.220 回答
2

如果你看到=第一个,这意味着你重新声明了你的变量值,但是如果你看到第一个,这意味着+你命令编译器增加变量的值,记住它

int x=20 ;
x=+10 ;
cout<< x <<endl ; // x  = 10


x+=10 ;
cout<< x<<endl ; // x= 10+10 = 20
于 2018-03-29T14:39:18.203 回答
-1

我可能记错了,但我认为在 C、C++ 甚至 Java(其语法与 C 和 C++ 相似)中,=+ 和 += 实际上的行为非常相似。=+ 是赋值语句(相当于普通 = 运算符),而 += 将变量的值增加了一定量,这是不正确的。

x += y 和 x =+ y 都具有相同的效果(也就是说,这两者都会导致 x 的新值成为 x + y 的旧值)。当您的表达式稍微复杂一点时,差异就出现了。

z = (x += y) 和 z = (x =+ y) 对于变量 z 会有不同的输出。让我们来看看其中的每一个:

z = (x += y) 将 y 添加到 x,然后将 z 设置为 x 的新值。

z = (x =+ y) 将 z 设置为 x 的 OLD 值,然后将 y 添加到 x。

有可能我把这两个倒退了,但我记得之前在某处读过,我在这里描述的差异是这两个之间的实际差异。

于 2020-09-28T04:02:26.300 回答