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? P>
4 Réponses :
Afin de vous aider à vous rappeler = + code> est vraiment
= + code> (attribution et les opérateurs
+ code>). p>
+ = = code>, 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. P>
a = + b code> signifie
a = + b code> signifie
a = b code> p> p>
sauf si le + code> est surchargé.
sauf si B code> est un type d'entier inférieur à
int code>, auquel cas il favorise
B code> sur
int code> ainsi que faire la tâche.
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
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. P>
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. P>
z = (x + = y) et z = (x = + y) aura des sorties différentes pour la variable z. Regardons chacun d'entre eux: p>
z = (x + = y) ajoutera y à x, puis réglez z pour être la nouvelle valeur de x. p>
z = (x = + y) réglera Z pour être l'ancienne valeur de x, puis ajouter y à x. p>
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. P>
Vous vous souvenez très mal. z = + x code> est analysé comme
z = (+ x) code>, c'est-à-dire code> + code> de
x code> x code> . Si
x code> est un int, le
+ code> n'a aucun effet.
Comme les personnes ont répondu, vous devez utiliser
+ = code> et non
= + code>. 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).
= + code> serait l'une de ces choses. Vous pouvez également ajouter des typos habituels -
lenght code> pour
longueur code>, mauvaise formatage -
si ( code> pour
si ( code>, etc. à la liste.