Pré incrémentation et de post-incrémentation
Je vais avoir du mal à comprendre comment Post Incrémentation (++
), Pré-Incrémentation (--
) et de l'addition/soustraction de travailler ensemble dans un exemple.
x++
signifie ajouter 1 à la variable.
x--
signifie soustraire 1 de la variable.
Mais je suis confus avec cet exemple:
int x = 2, y = 3, z = 1;`
y++ + z-- + x++;
Je suppose que cela signifie 3(+1) + 1(-1) + 2(+1)
ce Qui signifie que le résultat doit être de 7.
Mais quand je compile, je reçois 6
. Je ne comprends pas.
int main() {
int x=2, y=3, z=1;
int result;
result = y++ + z-- + x++; //this returns 6
cout << result << endl;
return 0;
}
Recherche de préfixe et le suffixe d'incrémentation/décrémentation les opérateurs.
OriginalL'auteur Hoon | 2012-09-23
Vous devez vous connecter pour publier un commentaire.
si vous effectuez ce nouveau
raison
operator++
renvoie la valeur d'origine, avant l'incrémentation de la variable.et
++operator
renvoie la valeur incrémentée--
est la même que ci-dessus juste son décrémenterOriginalL'auteur NullPoiиteя
Parce que le suffixe
operator++
renvoie la valeur d'origine, avant l'incrémentation de la variable. Le préfixeoperator++
incrémente la varialbe et renvoie une référence à elle. Le comportement peut être facilement illustré par un exemple:OriginalL'auteur juanchopanza
lorsque vous écrivez
x++
il utilise la valeur actuelle dex
et puis l'augmente par un.vous voulez écrire
++x
au lieu si vous voulez augmenter en premier.OriginalL'auteur none
Pre-increment operator(++p)
première augmentation de la valeur et de l'affecter etpost increment operator(p++)
d'abord attribuer la valeur et puis effectuez l'opération d'incrémentation.Ici, toutes les variables sont post incrément je.e initialement affecter sa valeur (sur le tampon) puis augmenter (pour y et x par 1) et de la diminution de z par 1. j'.ed'abord attribuer 3 + 1 + 2 dans le tampon(ajout est effectué sur la valeur tampon) et ensuite effectuer incrémente/décrémente x= 3,y=4 et z=0
pour plus d'informations, vous pouvez lire la réponse sur le Quelle est la réponse correcte pour cout << c++ << c;? et Pourquoi ces constructions (à l'aide d' ++) comportement indéfini? questions
Merci pour votre suggestion...j'avais ajouté de description ...
OriginalL'auteur Lionel
La position de
++
question.(source)
OriginalL'auteur Fabio Mora
Post-incrémentation/postdecrement incrémenter/décrémenter la variable, mais évalue les variables "précédent" de la valeur.
Donc l'expression
result = y++ + z-- + x++
agira quelque chose comme:Cependant, gardez à l'esprit que ce n'est pas nécessairement strictement la façon dont le compilateur d'effectuer l'évaluation. Pour cette expression, les résultats sont bien définis et vous vous retrouverez comme dans l'exemple. Lors de l'utilisation de plusieurs incrémenter/décrémenter les opérations dans la même expression, il est facile d'intégrer un comportement indéfini où vous ne serez pas en mesure de s'attendre à quelque chose en particulier à partir de l'expression. Voir Pourquoi ces constructions (à l'aide d' ++) comportement indéfini? pour plus de détails.
OriginalL'auteur Michael Burr
La raison en est simple.
L'association principe est utilisé ici, qui calcule les valeurs en fonction de la priorité des opérateurs.
AUSSI
X++
ouX--
les moyens... ALORS un CHANGEMENT...Il va d'abord utiliser la valeur et de l'incrémenter ou de décrémenter il.
Si vous voulez obtenir un résultat de
7
...essayez ceci.. il pourrait fonctionner...
OriginalL'auteur Siddharth-Verma
i++
/i--
post-incrémentation et de décrémentation de la variable...donc, dans notre expression, il prendra la valeur initiale pour la résolution de problèmes ensuite inc/dec par 1.
OriginalL'auteur Sai Ram
Vous pourrait aussi se rendre compte du comportement différent avec une boucle while:
considérant les expressions suivantes pour les incréments de
count
De la même manière, vous pouvez obtenir plus de perspicacité avec une boucle while, avec le préfixe
contre suffixé
OriginalL'auteur XavierStuvw
De sortie:
Ce qui signifie que
++var renvoie la valeur d'origine et
var++ renvoie la valeur incrémentée.
OriginalL'auteur vaibhav sonje