다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h>
int main(void) {
int x = 37;
int y = (x > 20) ? (x << 2) : (x >> 1);
printf("%d", y + 3);
return 0;
}모범답안
151
풀이와 판단 근거
먼저 x=37이므로 조건 x > 20은 참이다. C의 조건 연산자는 선택된 피연산자만 평가하므로 y에는 거짓 분기 x >> 1이 아니라 x << 2의 결과가 저장된다.
양의 정수 37을 왼쪽으로 2비트 이동하면 37×2²=148이다. 그다음 printf의 인수 y + 3을 계산해 148+3=151을 출력한다.
시프트보다 먼저 3을 더하거나 선택되지 않은 오른쪽 시프트를 계산에 섞으면 안 된다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 151와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.