Вопрос Вопрос Хотел бы узнать разницу i++(i--) от ++i(--i) в цикле for, на что это будет влиять (язык c++)?

Регистрация
31 Июл 2013
Сообщения
66
Репутация
0
Спасибо
0
Монет
0
Вопрос Хотел бы узнать разницу i++(i--) от ++i(--i) в цикле for, на что это будет влиять (язык c++)?
 
тестировал в jdoodle C #include int main() { int i; for(i=0;i<10;i++) printf("%i", i); printf("
"); for(i=0;i<10;++i) printf("%i", i); } 0123456789 0123456789 ------------------------------------------ #include int main() { int i; for(i=0;i<10;) printf("%i", i++); printf("
"); for(i=0;i<10;) printf("%i", ++i); } 0123456789 12345678910 ++i ни разу не пользовался - изврат Насчет разницы не знаю. возможно for(....i++) быстрее, если i находится гарантированно в регистре.
 
Если переменная простого типа, то компилятор генерирует оптимальный одинаковый код для обоих видов операторов. Если это экземпляр класса, например, итератор, то компилятор вызывает метод (функцию) - соответствующий перегруженный оператор. В префиксных операторах просто изменяются данные экземпляра, а в постфиксных - сначала создается копия экземпляра, изменяются данные экземпляра, а возвращается копия. Так что лучше, наверное, с классами или в обобщенном коде использовать префиксные операторы
 
Так ни на что не влияет for(size_t i = 0; i < n; ++i) { ...} for(size_t i = 0; i < n; i++) { ...} Так влияет for(size_t i = 0; i++ < n;) { ...} for(size_t i = 0; ++i < n;) { ...}
 
Для счётчика цикла разницы нет. i++ сначала верни i, потом прибавь к ней 1. ++i сначала прибавь 1, затем верни результат. То есть разница будет вот тут. result = ++i;
 
Назад
Сверху