Quelle est la différence entre ++ a et a ++ dans un langage de programmation?
Réponse 1:
Dans le langage de programmation, ces deux sont appelés comme instructions d'incrémentation pré (++ a) et post (a ++).
Laisse moi te donner un exemple,
a = 0, b = 0;
for (i = 0; i <= 5; i ++) {// boucle pendant 5 fois
printf ("% d", ++ a); // cela affichera "1 2 3 4 5"
printf ("% d", b ++); // et ce sera "0 1 2 3 4"
}
Dans ++ a, une valeur sera d'abord incrémentée puis attribuée
++ a -> incrément -> assign
Alors qu'en b ++, la valeur b sera attribuée en premier et ensuite elle sera incrémentée
a ++ -> assign -> increment
Réponse 2:
Dans le passé, les compilateurs n'étaient pas aussi intelligents et l'utilisation de ++ & - pouvait aider un compilateur à générer un meilleur code machine.
++ a incrémente et vous donne la valeur, et a ++ vous donne la valeur puis incrémente. En eux-mêmes, il n'y a pas de différence, mais ils sont dans une expression qu'ils sont différents.
L'incrémentation et la décrémentation automatiques sont très courantes dans de nombreux jeux d'instructions du processeur car elles sont très efficaces et faciles à mettre en œuvre.
Une pile est une structure de données commune, mais il y a 2 choix:
int stack [100]; // ma pile de nombres sera stockée ici * top = & stack [0]; // le haut de la pile est ajusté à chaque utilisation
// Méthode 1: top est l'endroit où quelque chose de nouveau sera PUSHED * top ++ = something; // POUSSER quelque chose puis incrémenter quelque chose = * —top; // décrémenter puis POP la première valeur
// Méthode 2: top est l'endroit où quelque chose d'ancien sera POPPED * ++ top = something; // incrémente alors PUSH quelque chose = * top—; // POP puis décrémente
Certains compilateurs CPU peuvent convertir certains d'entre eux en instructions uniques efficaces.
Un autre exemple est:
if (—a> 0) goto label;
pourrait être converti en une seule instruction CPU comme
djnz reg1, adresse; décrémenter le registre, sauter sinon zéro à l'adresse
Mais un processeur peut ne pas avoir d'instruction intégrée pour:
if (a—> 0) goto label;
qui pourrait être converti en quelque chose comme
déplacer reg1, reg2decrement reg1test reg2jnz adresse
Les compilateurs modernes «réécrivent» pratiquement souvent votre code pour tirer parti des instructions spéciales du processeur, donc à moins que vous ne programmiez sur un minuscule microcontrôleur limité, vous n'avez généralement pas à vous inquiéter.
Réponse 3:
Dans le passé, les compilateurs n'étaient pas aussi intelligents et l'utilisation de ++ & - pouvait aider un compilateur à générer un meilleur code machine.
++ a incrémente et vous donne la valeur, et a ++ vous donne la valeur puis incrémente. En eux-mêmes, il n'y a pas de différence, mais ils sont dans une expression qu'ils sont différents.
L'incrémentation et la décrémentation automatiques sont très courantes dans de nombreux jeux d'instructions du processeur car elles sont très efficaces et faciles à mettre en œuvre.
Une pile est une structure de données commune, mais il y a 2 choix:
int stack [100]; // ma pile de nombres sera stockée ici * top = & stack [0]; // le haut de la pile est ajusté à chaque utilisation
// Méthode 1: top est l'endroit où quelque chose de nouveau sera PUSHED * top ++ = something; // POUSSER quelque chose puis incrémenter quelque chose = * —top; // décrémenter puis POP la première valeur
// Méthode 2: top est l'endroit où quelque chose d'ancien sera POPPED * ++ top = something; // incrémente alors PUSH quelque chose = * top—; // POP puis décrémente
Certains compilateurs CPU peuvent convertir certains d'entre eux en instructions uniques efficaces.
Un autre exemple est:
if (—a> 0) goto label;
pourrait être converti en une seule instruction CPU comme
djnz reg1, adresse; décrémenter le registre, sauter sinon zéro à l'adresse
Mais un processeur peut ne pas avoir d'instruction intégrée pour:
if (a—> 0) goto label;
qui pourrait être converti en quelque chose comme
déplacer reg1, reg2decrement reg1test reg2jnz adresse
Les compilateurs modernes «réécrivent» pratiquement souvent votre code pour tirer parti des instructions spéciales du processeur, donc à moins que vous ne programmiez sur un minuscule microcontrôleur limité, vous n'avez généralement pas à vous inquiéter.