Это своего рода пост-напоминалка для себя. Меня удивило, что я не смог найти по запросу о реализации постфиксного или префиксного инкремента или декремента примера кода. Поэтому я решил восполнить этот пробел сам.
Напомню, что:
инкремент (оператор ++) увеличивает значение числа на 1
декремент (оператор —) уменьшает значение числа на 1.
Постфиксный — это означает то, что сначала над операндом (переменной) делаются какие-то операции, а уже после этого значение числа увеличивается или уменьшается. То есть, если у нас такая строчка: A = 5 * B—;, то это будет читаться так: умножить 5 на B и присвоить полученный результат переменной A, после чего уменьшить переменную B на единицу.
Префиксный — это противоположность постфиксному. Сначала оператор инкремента или декремента увеличивает или уменьшает операнд (переменную) и только после этого над ним производятся остальные операции, если они есть. То есть, если у нас такая строчка: A = 5 * —B;, то это будет читаться так: уменьшить значение переменной B на единицу, после чего умножить 5 на B и присвоить результат переменной A.
А вот как будет выглядеть реализация операций постфиксного и префиксного инкремента и декремента на C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
template <class X> //постфиксный инкремент X incPost (X &x) { X val = x; x = x+1; return val; } template <class X> //префиксный инкремент X incPre(X &x) { x = x+1; X val = x; return val; } template <class X> //постфикстный декремент X decPost (X &x) { X val = x; x = x-1; return val; } template <class X> //префиксный декремент X decPre(X &x) { x = x-1; X val = x; return val; } |
Если вас пугают непонятные строчки template <class X>, то можете смело выкинуть их, и заменить везде X на любой другой, нужный вам тип данных.
Полезная статья? Их будет больше, если вы поддержите меня!