Префиксная декрементация в цикле 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 (инициализация переменных; проверка условия; изменение счетчика)