Задать вопрос
@MrakLula

++i быстрее чем i++?

Правда ли что в си ++i выполнится быстрее чем i++?
  • Вопрос задан
  • 359 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
++i инкрементирует и возвращает ссылку на переменную i.
i++ создает временную переменную и сохраняет в неё текущее значение, инкрементирует значение переменной i, возвращает временную переменную.

Как видно у нас тут есть лишнее действие с переменной.
Но если вы просто напишите
++i;
i++;
то компилятор достаточно умный, чтобы понять, что можно заменить одну инструкцию на другую.

Написал код, который подтверждает мои слова:
https://godbolt.org/z/GvMejj1bd
Смотрите именно вывод ассмеблер.
Для удобства чтения разделил все nop инструкциями
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Теоретически, ++i быстрее. Практически - нет, потому что компиляторы могут и то и другое соптимизировать в одни и те же ассемблерные инструкции в большинстве случаев. Исключение, если инкримент используется в выражении. Но тогда они не взаимозаменяемы. Еще может быть случай, если i какого-то странного типа и инкрименты перегружены и криво написаны. Или если оптимизация отключена при компиляции. Или у вас доисторический компилятор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы