12
votes

Différence entre + = et = + en C ++

Lors de la programmation en C ++, je confond souvent "+ =" et "= +", le premier étant l'opérateur que je veux dire. Visual Studio semble accepter les deux, mais ils se comportent différemment et constituent une source pour beaucoup de mes bugs. Je sais que A + = B est sémantiquement équivalent à A = A + B, mais qu'est-ce que "= +" faire?


1 commentaires

Comme les personnes ont répondu, vous devez utiliser + = et non = + . Si vous vous trouvez fréquemment de cette erreur, écrivez simplement une liste de contrôle de choses que vous devez trouver dans les fichiers et réparer périodiquement (avant de libérer). = + serait l'une de ces choses. Vous pouvez également ajouter des typos habituels - lenght pour longueur , mauvaise formatage - si ( pour si (, etc. à la liste.


4 Réponses :


19
votes

= + est vraiment = + (attribution et les opérateurs + ).

Afin de vous aider à vous rappeler + = = , rappelez-vous qu'il est d'abord ajouté, puis affectation. Bien sûr, cela dépend de la mise en œuvre réelle, mais cela devrait être pour les primitives.


0 commentaires

14
votes

a = + b signifie a = + b signifie a = b


2 commentaires

sauf si le + est surchargé.


sauf si B est un type d'entier inférieur à int , auquel cas il favorise B sur int ainsi que faire la tâche.



1
votes

Si vous voyez = code> le premier, cela signifie que vous reflètez votre valeur variable, Mais si vous faites face au visage + code>, cela signifie que vous devez commander le compilateur d'incrémenter la valeur de la variable, gardez-la dans votre esprit

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


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


0 commentaires

-1
votes

Je me souviens peut-être de ce faux, mais je pense que dans C, C ++, et même Java (qui a une syntaxe similaire à C et C ++), = + et + = se comporter de manière très similaire. La déclaration selon laquelle = + est attribution (équivalent à un opérateur de plain =), tandis que + = augmente la valeur d'une variable d'une certaine quantité, est incorrecte.

x + = y ainsi que x = + y aura le même effet (c'est-à-dire que tous les deux entraîneront la nouvelle valeur de x l'ancienne valeur de x + y). La différence se trouve lorsque vous avez une expression légèrement complexe.

z = (x + = y) et z = (x = + y) aura des sorties différentes pour la variable z. Regardons chacun d'entre eux:

z = (x + = y) ajoutera y à x, puis réglez z pour être la nouvelle valeur de x.

z = (x = + y) réglera Z pour être l'ancienne valeur de x, puis ajouter y à x.

Il est possible que j'ai eu ces 2 à l'envers, mais je me souviens de lire quelque part avant que les différences que je décris ici soient les différences réelles entre ces 2.


1 commentaires

Vous vous souvenez très mal. z = + x est analysé comme z = (+ x) , c'est-à-dire + de x x . Si x est un int, le + n'a aucun effet.