다음 C 프로그램의 출력 결과로 옳은 것은?#include <st… | [국회직 9급 컴퓨터일반] 17년 1회차 기출문제 상세 페이지
1[국회직 9급 컴퓨터일반] 17년 1회차
다음 C 프로그램의 출력 결과로 옳은 것은?#include <stdio.h>
int main()
{
int i = 3;
int j = 4;
if((++i > j--) && (i++ < --j)) i = i-- + ++j;
else j = i-- - --j;
printf(”%d\n”, i);
}
1
1
2
2
3
3
4
4
5
5
해설
조건식이 거짓이 되어 else 문이 실행되고, 출력되는 i의 값은 3이다.
시작 값은 i = 3, j = 4이다.
++i로 i가 4가 되고, j--는 4를 내놓은 뒤 j가 3이 된다.
4 > 4는 거짓이므로 단락 평가로 뒤의 조건은 실행되지 않는다.
else 문의 i--는 4를 내놓은 뒤 i를 3으로 만들고, --j로 j는 2가 되어 j에 2가 대입된다.
printf는 i를 출력하므로 결과는 3이다.
- 1: else 문의 뺄셈을 감소된 i로 잘못 계산한 값이며 i의 값도 아니다.
- 2: i가 아니라 j에 대입된 값이다.
- 4: i--의 후위 감소를 반영하지 않은 값이다.
- 5: 첫 조건을 참으로 보고 i++까지 실행했다고 착각한 값이다.
오류나 개정된 내용이 보이면 알려주세요