Префиксная декрементация в цикле 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 (инициализация переменных; проверка условия; изменение счетчика)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д