Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bagdosha
#1

Прединкремент и постинкремент в цикле for - C++

24.02.2013, 17:35. Просмотров 971. Ответов 6
Метки нет (Все метки)

Всем привет!
Пытаюсь сам себе ответить на вопрос, есть ли разница в использовании пред- и постинкремента в цикле for. Т.е. циклы:
C++
1
for (a=0; a<10; a++);
и
C++
1
for (a=0; a<10; ++a);
идентичны или нет? Я не смог найти разницы.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прединкремент и постинкремент в цикле for (C++):

Си++ (прединкремент и постинкремент)? - C++
1)float c; int a=1, b=2; c=a/b; Ответ:0,5 Подскажите, если будет вот так: float c; int a=1, b=2; c=(float )a/b; то...

Какая операция быстрее, постинкремент, или преинкремент? - C++
какая операция быстрее: постинкремент, или преинкремент? и почему? как их можно записать на ассемблере?

Как програмно в цикле не доходя до конца, пропустить шаг в цикле? - C#
Как програмно в цикле не доходя до конца, пропустить шаг в цикле?

При склеивании строк в цикле, уже на пятом цикле возникает переполнение памяти - C Linux
При склеивании строк в цикле, уже на пятом цикле возникает переполнение памяти. Что не так и как правильно сделать? Не пинайте нуба! ...

Переменная, которая только что использовалась в цикле в качестве счётчика в следующем цикле не используется - Delphi
Помогите, пожалуйста. Вот отрывок программы (программа целиком- в архиве): procedure TForm1.Button1Click(Sender: TObject); begin ...

Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново? - C++ Builder
Занялся сабжем по проекту. IDE Builder 2010 1) Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле...

6
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
24.02.2013, 17:39 #2
В обоих случаях просто происходит увеличение переменной на 1, а возвращаемое значение этой операции не используется. Так что разницы в логике не будет.

Другое дело, если использовать возвращаемое значение: x = a++ и x = ++a - будет разница.
1
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
24.02.2013, 17:40 #3
в этом случае да операция инкримента выполняется в конце каждого цикла и в следуещем "кольце" цикла переменая уже увеличена
0
Jupiter
Каратель
Эксперт С++
6560 / 3981 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.02.2013, 17:42 #4
результат работы - идентичный
эффективность - зависит от типа переменной а, для встроенных типов всё равно, для пользовательских 2-й вариант предпочтительнее
1
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
24.02.2013, 17:49 #5
Цитата Сообщение от Bagdosha Посмотреть сообщение
идентичны или нет? Я не смог найти разницы.
В данном случае идентичен. И, скорее всего, при оптимизации a++ будет интерпретироваться так же как ++a, т.к. стоит вне выражения.
0
Bagdosha
24.02.2013, 17:50 #6
Цитата Сообщение от Jupiter Посмотреть сообщение
для пользовательских 2-й вариант предпочтительнее
т.е. ++a ? (я просто напутал - в заголовке написал сначала предикремент, а потом уже постикремент, а в коде наоборот)
Всем спасибо за оперативные ответы!
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
24.02.2013, 17:54 #7
Цитата Сообщение от Bagdosha Посмотреть сообщение
т.е. ++a
ага, не требуется создания временной переменной
1
24.02.2013, 17:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2013, 17:54
Привет! Вот еще темы с ответами:

О цикле - C++ Builder
Хочу поговорить о функции Application-&gt;ProcessMessages() . for(int i=0;i&lt;a;i++){ //code Application-&gt;ProcessMessages() ; } ...

If в цикле - MS Excel
Подскажите, что не так в коде:( Как мне правильно поставить if, чтобы правильно подсчитывалось количество? Sub ff() Dim MyComp ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru