C (forritunarmál): Hver er munurinn á: ++ a og a = a + 1?


svara 1:

Það er enginn munur. ++ a, a + = 1 og a = a + 1 eru samkvæmt skilgreining nákvæmlega sömu orðasambönd (þ.e. tungumálaskilgreiningin skilgreinir þau á þennan hátt).

Í öllum þremur tilvikum er afleiðing tjáningarinnar afrit af gildinu sem það skrifar í „a“ (a ++ er að sjálfsögðu frábrugðið að því leyti að niðurstaðan er afrit af gildinu sem það les úr „a“).

Eini munurinn er sá að ef „a“ er flóknari tjáning eins og aðgerðarkall kallast það tvisvar í „a = a + 1“ og forgangsröðun þessa verkefnis er mun lægri en hjá ++ verkefni í staðinn fyrir ++ krefst stundum viðbótar sviga: ++ a + ++ b er auðveldara að skrifa en (a + = 1) + (b + = 1) eða (a = a + 1) + (b = b + 1)


svara 2:

++ a og a + 1 eru svipuð, en vandamálið kemur upp þegar þú notar fleiri en eina breytu.

Til dæmis:

int a = 10, b;

++ a => eykur gildi a um einn (o / p: a = 11)

a ++ => eykur gildi a um einn (o / p: a = 11))

b = a ++ => Úthlutið fyrst gildinu a og aukið það síðan um 0ne (o / p: a = 11, b = 10)

b = ++ a => Fyrsta gildi a er aukið um eitt og síðan úthlutað til b (o / p: a = 11, b = 11)


svara 3:

++ a og a + 1 eru svipuð, en vandamálið kemur upp þegar þú notar fleiri en eina breytu.

Til dæmis:

int a = 10, b;

++ a => eykur gildi a um einn (o / p: a = 11)

a ++ => eykur gildi a um einn (o / p: a = 11))

b = a ++ => Úthlutið fyrst gildinu a og aukið það síðan um 0ne (o / p: a = 11, b = 10)

b = ++ a => Fyrsta gildi a er aukið um eitt og síðan úthlutað til b (o / p: a = 11, b = 11)


svara 4:

++ a og a + 1 eru svipuð, en vandamálið kemur upp þegar þú notar fleiri en eina breytu.

Til dæmis:

int a = 10, b;

++ a => eykur gildi a um einn (o / p: a = 11)

a ++ => eykur gildi a um einn (o / p: a = 11))

b = a ++ => Úthlutið fyrst gildinu a og aukið það síðan um 0ne (o / p: a = 11, b = 10)

b = ++ a => Fyrsta gildi a er aukið um eitt og síðan úthlutað til b (o / p: a = 11, b = 11)


svara 5:

++ a og a + 1 eru svipuð, en vandamálið kemur upp þegar þú notar fleiri en eina breytu.

Til dæmis:

int a = 10, b;

++ a => eykur gildi a um einn (o / p: a = 11)

a ++ => eykur gildi a um einn (o / p: a = 11))

b = a ++ => Úthlutið fyrst gildinu a og aukið það síðan um 0ne (o / p: a = 11, b = 10)

b = ++ a => Fyrsta gildi a er aukið um eitt og síðan úthlutað til b (o / p: a = 11, b = 11)