다음 C 프로그램의 실행 결과는?
#include <stdio.h>
int C(int v)
{
printf("%d ", v);
return 1;
}
int main()
{
int a = -2;
int b = !a;
printf("%d %d %d %d ", a, b, a && b, a || b);
if (b && C(10))
printf("A ");
if (b & C(20))
printf("B");
return 0;
}정답 1번
a=-2는 0이 아니므로 b=!a의 값은 0이다. 1. 첫 printf는 a, b, a&&b, a||b를 차례로 출력해 `-2 0 0 1`이 된다. 2. `b && C(10)`은 b가 0이어서 단락 평가되므로 C(10)을 호출하지 않는다. 3. `b & C(20)`은 비트 AND이므로 두 피연산자를 모두 평가해 C(20)이 20을 출력한다. 연산 결과는 0이어서 B는 출력하지 않는다. 최종 출력은 `-2 0 0 1 20`이다.
콘텐츠 정보
- 자료 유형
- 공개 기출
- 검수 상태
- 자동 검사 완료
- 해설 작성·검수
- 정처LAB 자동 검사
- 최종 검수
- 2026-07-26