- 2
Объясните пожалуйста, в чем разница префикса и постфикса?
3 Answers
+ 2
Допустим х=10 у=11
Смотри, когда мы пишем у=х++, то сначала мы присваиваем у=10 а потом прибавляем к х единицу и получаем х=11
В итоге х=11 у=10
-------
Когда мы пишем у=++х, то сначала прибавляем единицу к х и получаем х=11
А затем присваиваем у=х то есть у=11
В итоге х=11 у=11
-------
Похожая запись, результат разный
+ 1
А главного-то не сказали:
T& operator++(T& val);
T operator++(T& val, T);
Префиксная версия возвращает саму переменную (ссылку на нее), а постфиксная - только её значение! Это все равно что создать новую неизменяемую переменную и подставить её на место, где ожидалась старая (изменяемая)
a = 0;
++++a; // 2
a++++; // Упс