(Примечание.. Я не прошу об определениях преинкремента против постинкремента, или, как они используются в C/C++ Поэтому я не думаю, что это дубликат вопрос)Каковы исторические причины Языки C имеют предварительные приращения и пост-приращения?
Разработчики из C (Деннис Ричи и др.) создали приращения и сокращения операторов по очень веским причинам. Я не понимаю, почему они решили создать различие пре-инкрементов/декрементов?
Я считаю, что эти операторы были гораздо полезнее, когда C разрабатывался, чем сегодня. Большинство программистов на C/C++ используют одно или другое, а программисты из других языков находят различие сегодня странным и запутанным (NB: это основано исключительно на анекдотических доказательствах).
Почему они решили сделать это, и что изменилось в расчетах, что это различие сегодня не так полезно?
Для записи, разница между ними можно увидеть в 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
[Разработка языка C (по Ritchie)] (http://cm.bell-labs.co/who/dmr/chist.html) содержит абзац об операторах инкрементации, а также постфикс/префикс, но не вдаваясь в подробности. – dyp
Побочный эффект - это то, что полезно. –
[Предупреждение о спекуляции] При программировании систем на C или C++ вы в конечном итоге пишете много кода. Все, что помогает вам оставаться кратким, хорошо. Операторы префикса и постфикса позволяют программистам тратить меньше места на переменную жонглирование. Я думаю, именно поэтому они добавили его. Я удивлен тем, что C не имеет оператора с переменными значениями. – Dai