C ++中+ =和= +之间的差异

时间:2013-10-17 12:04:41

标签: c++ operators

用C ++编程时,我经常混淆“+ =”和“= +”,前者是我实际意思的算子。 Visual Studio似乎同时接受它们,但它们的行为却不同,并且是我很多bug的来源。我知道a + = b在语义上等同于a = a + b,但是“= +”是做什么的?

4 个答案:

答案 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个之间的实际差异。