| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > выполнение ++i |
| Автор: nmn 26.12.2009, 06:21 |
| здравствуйте слышал говорят что ++a будет выполняться чуть быстрее чем a++, почему? |
| Автор: cristaloleg 26.12.2009, 09:18 |
| уже была такая статья...ищи в важных |
| Автор: fry 26.12.2009, 09:30 |
| Могу разочаровать, с --а и а-- та же хрень творится. |
| Автор: Peter 26.12.2009, 12:56 |
| Не знаю наверняка, но догадываюсь. ++a увеличивает значение a на единицу и возвращает это новое значение, а a++ возвращает старое значение. Таким образом, в первом случае достаточной одной ячейки памяти и работы над ней, а во втором необходимо две - для a и старого значения. |
| Автор: djamshud 26.12.2009, 13:41 |
| Peter абсолютно прав. Добавлю лишь, что компиляторы уже давным давно научились превращать i++ в ++i, когда это возможно. Так что как правило об этом можно не париться. |
| Автор: nmn 26.12.2009, 14:03 |
| спасибо |
| Автор: xvr 26.12.2009, 21:52 |
| Если a -это какой нибудь класс, то эффективность выполнения ++a и a++ целиком определяется им самим. В этом случае (с точки зрения здравого смысла и семантики префиксных и постфиксных операций инкремента) ++a должно быть эффективнее |
| Автор: xvr 27.12.2009, 12:04 | ||||
Peter уже писал подробнее, но могу повторить: Префиксный инкремент должен увеличить сущность, к которой он применен, и вернуть ее (это семантика ++a в C++). Т.е. при реализации оператором в классе он обычно продвигает то, на что класс указывает, после чего возвращает референс на сам класс с помощью конструкции *this. Постфиксный инкремент так же увеличивает сущность, но возвращает ЕЕ КОПИЮ ДО увеличения. Что обычно реализуется как
|
| Автор: bsa 29.12.2009, 11:25 |
| nmn, http://forum.vingrad.ru/forum/topic-269794/kw-faq-c++.html |