C (llenguatge de programació): Quina diferència hi ha entre: ++ a i a = a + 1?


Resposta 1:

No hi ha diferència. ++ a, a + = 1, i a = a + 1 són expressions exactes, per definició (el significat, les especificacions del llenguatge les defineixen d'aquesta manera).

En els tres casos, el resultat de l'expressió és una còpia del valor que escriurà a "a" (un ++ és, per descomptat, diferent perquè el resultat és una còpia del valor que va llegir de "a")

L’única diferència és que si “a” és una expressió més complicada, com ara una trucada de funció, s’anomenarà dues vegades en “a = a + 1”, i que la precedència de l’assigment és molt inferior a ++, de manera que s’utilitza una assignació en lloc de ++ de vegades requereix parèntesis addicionals: ++ a + ++ b és més simple escriure que (a + = 1) + (b + = 1) o (a = a + 1) + (b = b + 1)


Resposta 2:

++ a i a + 1 s’assemblen al mateix, però el problema es produeix quan usàveu utilitzant més d’una variable.

exemple:

int a = 10, b;

++ a => augmenta el valor a per un (o / p: a = 11)

a ++ => augmenta el valor a per un (o / p: a = 11))

b = a ++ => Assigna primer el valor a a i després augmenta per 0ne (o / p: a = 11, b = 10)

b = ++ a => Primer valor a s'incrementa en un i s'assigna a b (o / p: a = 11, b = 11)


Resposta 3:

++ a i a + 1 s’assemblen al mateix, però el problema es produeix quan usàveu utilitzant més d’una variable.

exemple:

int a = 10, b;

++ a => augmenta el valor a per un (o / p: a = 11)

a ++ => augmenta el valor a per un (o / p: a = 11))

b = a ++ => Assigna primer el valor a a i després augmenta per 0ne (o / p: a = 11, b = 10)

b = ++ a => Primer valor a s'incrementa en un i s'assigna a b (o / p: a = 11, b = 11)


Resposta 4:

++ a i a + 1 s’assemblen al mateix, però el problema es produeix quan usàveu utilitzant més d’una variable.

exemple:

int a = 10, b;

++ a => augmenta el valor a per un (o / p: a = 11)

a ++ => augmenta el valor a per un (o / p: a = 11))

b = a ++ => Assigna primer el valor a a i després augmenta per 0ne (o / p: a = 11, b = 10)

b = ++ a => Primer valor a s'incrementa en un i s'assigna a b (o / p: a = 11, b = 11)


Resposta 5:

++ a i a + 1 s’assemblen al mateix, però el problema es produeix quan usàveu utilitzant més d’una variable.

exemple:

int a = 10, b;

++ a => augmenta el valor a per un (o / p: a = 11)

a ++ => augmenta el valor a per un (o / p: a = 11))

b = a ++ => Assigna primer el valor a a i després augmenta per 0ne (o / p: a = 11, b = 10)

b = ++ a => Primer valor a s'incrementa en un i s'assigna a b (o / p: a = 11, b = 11)