C (мова праграмавання): у чым розніца паміж: ++ a і a = a + 1?


адказ 1:

Розніцы няма. ++ a, a + = 1 і a = a + 1 па азначэнні маюць абсалютна аднолькавыя выразы (г.зн. спецыфікацыя мовы вызначае іх такім чынам).

Ва ўсіх трох выпадках вынік выраза - гэта копія значэння, якое ён запісвае ў "а" (а ++, вядома, адрозніваецца тым, што вынік - копія значэння, якое ён счытвае з "а").

Адзінае адрозненне заключаецца ў тым, што, калі "a" - гэта больш складаны выраз, як выклік функцыі, ён выклікаецца двойчы ў "a = a + 1", і прыярытэт гэтага прызначэння значна ніжэйшы, чым у прызначэнні ++ замест ++ часам патрабуе дадатковых дужак: ++ a + ++ b пішацца лягчэй, чым (a + = 1) + (b + = 1) або (a = a + 1) + (b = b + 1)


адказ 2:

++ a і + 1 падобныя, але праблема ўзнікае пры выкарыстанні некалькіх зменных.

Напрыклад:

int a = 10, b;

++ a => павялічвае значэнне a на адно (o / p: a = 11)

a ++ => павялічвае значэнне a на адзін (o / p: a = 11))

b = a ++ => Спачатку прысвоіце значэнне a, а потым павялічце яго на 0ne (o / p: a = 11, b = 10)

b = ++ a => Першае значэнне a павялічваецца на адно, а потым прысвойваецца b (o / p: a = 11, b = 11)


адказ 3:

++ a і + 1 падобныя, але праблема ўзнікае пры выкарыстанні некалькіх зменных.

Напрыклад:

int a = 10, b;

++ a => павялічвае значэнне a на адно (o / p: a = 11)

a ++ => павялічвае значэнне a на адзін (o / p: a = 11))

b = a ++ => Спачатку прысвоіце значэнне a, а потым павялічце яго на 0ne (o / p: a = 11, b = 10)

b = ++ a => Першае значэнне a павялічваецца на адно, а потым прысвойваецца b (o / p: a = 11, b = 11)


адказ 4:

++ a і + 1 падобныя, але праблема ўзнікае пры выкарыстанні некалькіх зменных.

Напрыклад:

int a = 10, b;

++ a => павялічвае значэнне a на адно (o / p: a = 11)

a ++ => павялічвае значэнне a на адзін (o / p: a = 11))

b = a ++ => Спачатку прысвоіце значэнне a, а потым павялічце яго на 0ne (o / p: a = 11, b = 10)

b = ++ a => Першае значэнне a павялічваецца на адно, а потым прысвойваецца b (o / p: a = 11, b = 11)


адказ 5:

++ a і + 1 падобныя, але праблема ўзнікае пры выкарыстанні некалькіх зменных.

Напрыклад:

int a = 10, b;

++ a => павялічвае значэнне a на адно (o / p: a = 11)

a ++ => павялічвае значэнне a на адзін (o / p: a = 11))

b = a ++ => Спачатку прысвоіце значэнне a, а потым павялічце яго на 0ne (o / p: a = 11, b = 10)

b = ++ a => Першае значэнне a павялічваецца на адно, а потым прысвойваецца b (o / p: a = 11, b = 11)