Префиксная декрементация в цикле for - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа проходит по массиву и находит чётные элементы. Вопрос возник со вторым циклом for:
Листинг программы
  1. for (--evenCounter; evenCounter >= 0; evenCounter--)
При входе в цикл значение переменной сразу же уменьшается на 1(--evenCounter). Постфиксная декрементация (evenCounter--) осуществляется при второй петле цикла, но не осуществляется префиксная, как показала следующая работа программы:

evenCounter before = 5 evenCounter in loop = 4 10 evenCounter in loop = 3 8 evenCounter in loop = 2 6 evenCounter in loop = 1 4 evenCounter in loop = 0 2

Как я понимаю эту программу, то во второй петле цикла значение evenCounter должно изменяться дважды на 1-цу(т.е будет выполняться --evenCounter и evenCounter--), а оно изменяется каждый и последующий раз только на одну 1-цу. Так получается, что префиксная декрементация выполняется только один раз при первом вхождении в цикл. Почему в последующем префиксная декрементация (--evenCounter) игнорируется?
Листинг программы
  1. #include <stdio.h>
  2. int main() {
  3. int A[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  4. int even[10];
  5. int evenCounter = 0;
  6. int *iter, *end;
  7. for (iter = A, end = &A[10]; iter < end; iter++) {
  8. if (*iter % 2 == 0) {
  9. even[evenCounter++] = *iter;
  10. }
  11. }
  12. printf("evenCounter before = %d\n", evenCounter);
  13. for (--evenCounter; evenCounter >= 0; evenCounter--) {
  14. printf("evenCounter in loop = %d\n", evenCounter);
  15. printf("%d \n", even[evenCounter]);
  16. }
  17. return 0;
  18. }

Решение задачи: «Префиксная декрементация в цикле for»

textual
Листинг программы
  1. for (инициализация переменных; проверка условия; изменение счетчика)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы