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)