У чым розніца паміж папярэдняга павелічэння і пасля дэкрэту?


адказ 1:

Незалежна ад таго, што гэта прырашчэнне (++) або памяншэнне (- -) аперацыі, розніца для папярэдняй або пасля публікацыі заключаецца ў тым, ці адбываецца аперацыя да або пасля таго, як выраз быў ацэнены. Як вынікае з назвы, папярэдняе павелічэнне азначае, што значэнне павялічваецца перад ацэнкай выразу, а пост-дэкрэмент азначае, што значэнне памяншаецца пасля ацэнкі выразу.

Просты прыклад:

int a = 5; int b = ++ a; // і a, і b маюць аднолькавае значэнне 6. int c = 5; int d = c--; // c будзе 4, і сапраўды будзе 5

Для больш глыбокага разумення мы можам мець складаныя выразы, як паказана ніжэй.

int a = 5; int b = a ++ + --a; // a = 5, b = 10 a = 5; b = a +++ a; // a = 6, b = 11 a = 5; b = ++ a + a; // a = 6, b = 12

Калі вы можаце адказаць вышэй, мяркуецца, што вы добра разумееце гэтых унарных аператараў. Возьмем прыклад для апошняга выразу, b = ++ a + a. Аперацыя складання спачатку вылічвае значэнне левага операнда, а потым другі операнд. Значэнне для першага операнда складае 6 (значэнне для a ў гэтым месцы ўстаноўлена 6), а для другога операнда таксама 6 (паколькі ў гэтым месцы значэнне a з'яўляецца 6). Дадатак 12, які захоўваецца на б.

Спадзяюся, што адкажа на ваша пытанне.


адказ 2:

Пытанне некалькі неадназначнае. Існуе розніца паміж папярэдняй і пасля пасады і розніца паміж прырашчэннем і памяншэннем. Фактычна ёсць 4 аператары: папярэдняе павелічэнне, пасля прырашчэнне, папярэдняе павышэнне і пасля дэкрэментаванне. Прырашчэнне павялічвае значэнне на 1, памяншэнне памяншае яго на адно. Розніца паміж папярэдняй і пасля паведамлення - гэта значэнне, якое вяртаецца. У папярэдніх аперацыях аперацыя выконваецца, а потым вяртае сваё значэнне. у post - значэнне, якое вяртаецца - гэта значэнне перад аперацыяй. Вазьміце напрыклад гэты код;

х = 3; // х мае значэнне 3

у = ++ х; // x павялічваецца да 4, а 4 прысвойваецца значэнне 4

х = 3; // Зноў мае х 3

у = х ++; Значэнне 3 захоўваецца. х павялічваецца да 4. y прызначаецца прысвоенае значэнне 3