用C ++编程时,我经常混淆“+ =”和“= +”,前者是我实际意思的算子。 Visual Studio似乎同时接受它们,但它们的行为却不同,并且是我很多bug的来源。我知道a + = b在语义上等同于a = a + b,但是“= +”是做什么的?
答案 0 :(得分:14)
=+
确实是= +
(作业和一元+
运算符。)
为了帮助您记住+=
,请记住它先添加,然后分配。当然,这取决于实际的实现,但它应该是基元。
答案 1 :(得分:10)
a =+ b
表示a = +b
表示a = b
答案 2 :(得分:0)
如果您看到第一个=
,则表示您重新声明了您的变量值,
但如果你面对+
第一个意味着你命令编译器增加变量的值,请记住它
int x=20 ;
x=+10 ;
cout<< x <<endl ; // x = 10
x+=10 ;
cout<< x<<endl ; // x= 10+10 = 20
答案 3 :(得分:0)
我可能会记住这个错误,但是我认为在C,C ++甚至Java(其语法与C和C ++类似)中,= +和+ =实际上表现得非常相似。 = +是赋值的语句(等同于plain =运算符),而+ =将变量的值增加一定量,这是不正确的。
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。
有可能我把这2个倒退了,但我确实记得读过一点,在此我描述的差异是这2个之间的实际差异。