C (език на програмиране): Каква е разликата между: ++ a и a = a + 1?


Отговор 1:

Няма разлика. ++ a, a + = 1 и a = a + 1 са абсолютно същите изрази по дефиниция (което означава, че спецификацията на езика ги определя по този начин).

И в трите случая резултатът от израза е копие на стойността, която ще запише в „a“ (a ++, разбира се, е различна по това, че резултатът е копие на стойността, която чете от „a“)

Единствената разлика е, че ако "a" е по-сложен израз, като извикване на функция, той ще бъде извикан два пъти в "a = a + 1" и това предимство на присвояването е много по-ниско от ++, така че да се използва присвояването вместо ++ понякога изисква допълнителни скоби: ++ a + ++ b е по-лесно да се запише от (a + = 1) + (b + = 1) или (a = a + 1) + (b = b + 1)


Отговор 2:

++ a и + 1 прилича на същото, но проблемът възниква, когато u използвате повече от една променлива.

например:

int a = 10, b;

++ a => увеличава стойността a по една (o / p: a = 11)

a ++ => увеличава стойността a по една (o / p: a = 11))

b = a ++ => Първо присвойте стойността a на a и след това с увеличение от 0ne (o / p: a = 11, b = 10)

b = ++ a => Първата стойност a се увеличава с една и след това се присвоява на b (o / p: a = 11, b = 11)


Отговор 3:

++ a и + 1 прилича на същото, но проблемът възниква, когато u използвате повече от една променлива.

например:

int a = 10, b;

++ a => увеличава стойността a по една (o / p: a = 11)

a ++ => увеличава стойността a по една (o / p: a = 11))

b = a ++ => Първо присвойте стойността a на a и след това с увеличение от 0ne (o / p: a = 11, b = 10)

b = ++ a => Първата стойност a се увеличава с една и след това се присвоява на b (o / p: a = 11, b = 11)


Отговор 4:

++ a и + 1 прилича на същото, но проблемът възниква, когато u използвате повече от една променлива.

например:

int a = 10, b;

++ a => увеличава стойността a по една (o / p: a = 11)

a ++ => увеличава стойността a по една (o / p: a = 11))

b = a ++ => Първо присвойте стойността a на a и след това с увеличение от 0ne (o / p: a = 11, b = 10)

b = ++ a => Първата стойност a се увеличава с една и след това се присвоява на b (o / p: a = 11, b = 11)


Отговор 5:

++ a и + 1 прилича на същото, но проблемът възниква, когато u използвате повече от една променлива.

например:

int a = 10, b;

++ a => увеличава стойността a по една (o / p: a = 11)

a ++ => увеличава стойността a по една (o / p: a = 11))

b = a ++ => Първо присвойте стойността a на a и след това с увеличение от 0ne (o / p: a = 11, b = 10)

b = ++ a => Първата стойност a се увеличава с една и след това се присвоява на b (o / p: a = 11, b = 11)