C (langage de programmation): Quelle est la différence entre: ++ a et a = a + 1?


Réponse 1:

Il n'y a pas de différence. ++ a, a + = 1 et a = a + 1 sont exactement les mêmes expressions, par définition (ce qui signifie que les spécifications de langue les définissent de cette façon).

Dans les trois cas, le résultat de l'expression est une copie de la valeur qu'elle écrira dans "a" (a ++ est, bien sûr, différent en ce que le résultat est une copie de la valeur lue dans "a")

La seule différence est que si "a" est une expression plus compliquée, comme un appel de fonction, elle sera appelée deux fois dans "a = a + 1", et la priorité de l'assignation est bien inférieure à celle de ++, donc en utilisant l'affectation au lieu de ++ nécessite parfois des parenthèses supplémentaires: ++ a + ++ b est plus simple à écrire que (a + = 1) + (b + = 1) ou (a = a + 1) + (b = b + 1)


Réponse 2:

++ a et a + 1 se ressemblent mais le problème se produit lorsque u utilisait plus d'une variable.

exemple:

int a = 10, b;

++ a => incrémente la valeur a de un (o / p: a = 11)

a ++ => incrémente la valeur a de un (o / p: a = 11))

b = a ++ => Attribuez d'abord la valeur a à a puis incrémentez de 0ne (o / p: a = 11, b = 10)

b = ++ a => La première valeur a est incrémentée de un puis affectée à b (o / p: a = 11, b = 11)


Réponse 3:

++ a et a + 1 se ressemblent mais le problème se produit lorsque u utilisait plus d'une variable.

exemple:

int a = 10, b;

++ a => incrémente la valeur a de un (o / p: a = 11)

a ++ => incrémente la valeur a de un (o / p: a = 11))

b = a ++ => Attribuez d'abord la valeur a à a puis incrémentez de 0ne (o / p: a = 11, b = 10)

b = ++ a => La première valeur a est incrémentée de un puis affectée à b (o / p: a = 11, b = 11)


Réponse 4:

++ a et a + 1 se ressemblent mais le problème se produit lorsque u utilisait plus d'une variable.

exemple:

int a = 10, b;

++ a => incrémente la valeur a de un (o / p: a = 11)

a ++ => incrémente la valeur a de un (o / p: a = 11))

b = a ++ => Attribuez d'abord la valeur a à a puis incrémentez de 0ne (o / p: a = 11, b = 10)

b = ++ a => La première valeur a est incrémentée de un puis affectée à b (o / p: a = 11, b = 11)


Réponse 5:

++ a et a + 1 se ressemblent mais le problème se produit lorsque u utilisait plus d'une variable.

exemple:

int a = 10, b;

++ a => incrémente la valeur a de un (o / p: a = 11)

a ++ => incrémente la valeur a de un (o / p: a = 11))

b = a ++ => Attribuez d'abord la valeur a à a puis incrémentez de 0ne (o / p: a = 11, b = 10)

b = ++ a => La première valeur a est incrémentée de un puis affectée à b (o / p: a = 11, b = 11)