N Log

while문에서 전위 감소와 후위 감소

다음 각 코드의 출력 결과를 예상해보시오.
각 문제마다 아래 내용을 적어보시오.

  • 반복 횟수
  • 출력 값
  • 설명

문제

1. 전위 감소 + > 0

#include <stdio.h>

int main(void)
{
    int i = 3;

    while (--i > 0)
    {
        printf("%d ", i);
    }

    return 0;
}

2. 전위 감소 + >= 0

#include <stdio.h>

int main(void)
{
    int i = 3;

    while (--i >= 0)
    {
        printf("%d ", i);
    }

    return 0;
}

3. 후위 감소 + > 0

#include <stdio.h>

int main(void)
{
    int i = 3;

    while (i-- > 0)
    {
        printf("%d ", i);
    }

    return 0;
}

4. 후위 감소 + >= 0

#include <stdio.h>

int main(void)
{
    int i = 3;

    while (i-- >= 0)
    {
        printf("%d ", i);
    }

    return 0;
}

해답

1. 전위 감소 + > 0

반복 횟수: 2회
출력 값: 2 1

설명:

  • while (--i > 0)
  • --i는 조건식에서 비교(>)하기 전에 먼저 i를 감소시킨다.
  • 2 > 0, 1 > 0은 참이라 본문이 실행되고, 0 > 0은 거짓이라 반복이 종료된다.

2. 전위 감소 + >= 0

반복 횟수: 3회
출력 값: 2 1 0

설명:

  • while (--i >= 0)
  • --i는 조건식에서 비교(>=)하기 전에 먼저 i를 감소시킨다.
  • 2 >= 0, 1 >= 0, 0 >= 0은 참이라 본문이 실행되고, -1 >= 0은 거짓이라 반복이 종료된다.

3. 후위 감소 + > 0

반복 횟수: 3회
출력 값: 2 1 0

설명:

  • while (i-- > 0)
  • i--의 식의 값은 감소 전의 i 값이고, 이후 i는 1 감소한다.
  • 조건식에서는 3 > 0, 2 > 0, 1 > 0이 차례로 참이 된다.
  • 조건식 평가 후에는 i가 감소한 상태로 본문이 실행되므로 2, 1, 0이 출력된다.
  • 이후 0 > 0은 거짓이라 반복이 종료된다.

4. 후위 감소 + >= 0

반복 횟수: 4회
출력 값: 2 1 0 -1

설명:

  • while (i-- >= 0)
  • i--의 식의 값은 감소 전의 i 값이고, 이후 i는 1 감소한다.
  • 조건식에서는 3 >= 0, 2 >= 0, 1 >= 0, 0 >= 0이 차례로 참이 된다.
  • 조건식 평가 후에는 i가 감소한 상태로 본문이 실행되므로 2, 1, 0, -1이 출력된다.
  • 이후 -1 >= 0은 거짓이라 반복이 종료된다.