(Примечание: я не спрашиваю об определениях пре-инкремента и пост-инкремента или о том, как они используются в C/C++. Поэтому я не думаю, что это повторяющийся вопрос.)
Разработчики C (Деннис Ритчи и др.) создали операторы инкремента и декремента по очень веским причинам. Чего я не понимаю, так это почему они решили провести различие между пре- и пост-инкрементами/декрементами?
Мне кажется, что эти операторы были гораздо полезнее, когда разрабатывался C, чем сегодня. Большинство программистов на C/C++ используют тот или иной вариант, а программисты, работающие на других языках, сегодня находят это различие странным и запутанным (примечание: это основано исключительно на неофициальных данных).
Почему они решили это сделать, и что изменилось в вычислениях, что это различие сегодня не так полезно?
Для справки, разницу между ними можно увидеть в коде C++:
int x = 3;
cout << "x = 3; x++ == " << x++ << endl;
cout << "++x == " << ++x << endl;
cout << "x-- == " << x-- << endl;
cout << "--x == " << --x << endl;
даст в качестве вывода
x++ == 3
++x == 5
x-- == 5
--x == 3
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ~Martin Fowler
- person v.oddou   schedule 25.05.2015inc/dec
, их можно тривиально заменить наadd r0,r0,#1
(пример ARM). Различие между post и pre сегодня важно как никогда. - person Jongware   schedule 25.05.2015three
вместоx
, когда вы планируете мутировать, кажется преднамеренной попыткой изобразить эти операторы как запутанные. - person Tony Delroy   schedule 25.05.2015