Каковы исторические причины, по которым языки C имеют преинкременты и постинкременты?
(Примечание: я не спрашиваю об определениях перед инкрементом или после инкремента или о том, как они используются в 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