C 프로그램의 실행 결과로 옳은 것은?#define VALUE1 1#d… | [계리직 컴퓨터일반] 10년 1회차 기출문제 상세 페이지
1[계리직 컴퓨터일반] 10년 1회차
C 프로그램의 실행 결과로 옳은 것은?#define VALUE1 1
#define VALUE2 2
main()
{
float i;
int j,k,m;
i = 100/300;
j = VALUE1 & VALUE2;
k = VALUE1 | VALUE2;
if (j && k || i) m = i + j;
else m = j + k;
printf("i = %.1f j = %d k = %d m = %03d\n", i,j,k,m)
}
1
i = 0.0 j = 0 k = 3 m = 003
2
i = 0.3 j = 0 k = 3 m = 000
3
i = 0.0 j = 1 k = 1 m = 001
4
i = 0.3 j = 1 k = 1 m = 001
해설
실행 결과는 i = 0.0 j = 0 k = 3 m = 003이다.
100/300은 정수끼리의 나눗셈이라 0이 되어 i에는 0.0이 들어간다. 비트 연산 1 & 2 는 0, 1 | 2 는 3이므로 j = 0, k = 3 이다.
조건 (j && k || i)에서 j가 0이라 앞부분이 거짓이고 i도 0.0이라 전체가 거짓이므로 else의 m = j + k = 3 이 실행되고, %03d 서식으로 003이 출력된다.
- i = 0.3 j = 0 k = 3 m = 000: 정수 나눗셈 결과 0이 float로 저장되어 i는 0.0이고, m도 j + k = 3이므로 003이다.
- i = 0.0 j = 1 k = 1 m = 001: &와 |는 비트 연산이라 1 & 2 는 0, 1 | 2 는 3이다.
- i = 0.3 j = 1 k = 1 m = 001: i의 소수부와 j, k의 비트 연산 결과가 모두 틀렸다.
오류나 개정된 내용이 보이면 알려주세요