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은 거짓이라 반복이 종료된다.