C 언어 기초

int n = 2, c = 0;
switch (n) {
case 1: c += 1;
case 2: c += 10;
case 3: c += 100; break;
default: c += 1000;
}
printf("%d\n", c);

break가 없는 case를 포함하는 위의 switch 문을 실행했을 때의 출력으로 올바른 것은?

  1. A10
  2. B110
  3. C1110
정답과 해설 보기

정답: B. 110

switch 문은 n의 값에 맞는 case 레이블로 점프하고, 거기서부터 break를 만날 때까지 아래 case의 문도 이어서 실행합니다(폴스루). n은 2이므로 case 2부터 실행을 시작하여, c += 10 다음에 case 3의 c += 100도 실행하고 break로 switch를 빠져나갑니다. c는 10 + 100 = 110입니다. 의도적으로 이어서 실행시키는 경우에는 그 사실을 주석으로 적어 두면 break를 빠뜨린 실수와 구별하기 쉬워집니다.

이 분야 연습하기 분야로 돌아가기

C 언어 기초의 다른 문제

  1. 위의 프로그램을 실행했을 때의 출력으로 올바른 것은?
  2. 위의 함수 f를 3번 연속으로 호출했을 때, 세 번째 반환값으로 올바른 것은?
  3. C 언어에서 (1) 함수 안에서 static을 붙이지 않고 선언한 지역 변수, (2) malloc으로 확보한 영역, (3) 함수 밖에서 선언한 변수가 각각 존재하는 기간(수명)의 조합으로 올바른 것은?
  4. int는 32비트(최댓값 2147483647)로 한다. 위의 함수 fact(n)이 n의 계승을 오버플로 없이 올바르게 반환하는 최대의 n은?
  5. int는 4바이트, 포인터는 8바이트로 한다. int형에 대한 포인터 p의 값(주소)이 0x1000일 때, p + 3의 값은?