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