Префиксная декрементация в цикле for - C (СИ)
Формулировка задачи:
Программа проходит по массиву и находит чётные элементы.
Вопрос возник со вторым циклом for:
При входе в цикл значение переменной сразу же уменьшается на 1(--evenCounter). Постфиксная декрементация (evenCounter--) осуществляется при второй петле цикла, но не осуществляется префиксная, как показала следующая работа программы:
for (--evenCounter; evenCounter >= 0; 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) игнорируется?#include <stdio.h> int main() { int A[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int even[10]; int evenCounter = 0; int *iter, *end; for (iter = A, end = &A[10]; iter < end; iter++) { if (*iter % 2 == 0) { even[evenCounter++] = *iter; } } printf("evenCounter before = %d\n", evenCounter); for (--evenCounter; evenCounter >= 0; evenCounter--) { printf("evenCounter in loop = %d\n", evenCounter); printf("%d \n", even[evenCounter]); } return 0; }
Решение задачи: «Префиксная декрементация в цикле for»
textual
Листинг программы
for (инициализация переменных; проверка условия; изменение счетчика)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д