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.