다음 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap(a, b);
switch(a) {
case 1:
b += 1;
case 11:
b += 2;
default:
b += 3;
break;
}
printf("%d", a-b);
}
swap 함수는 원본 변수에 영향을 주지 못한다.break가 없는 case는 연속 실행된다는 특징을 이해해야 한다.a는 그대로 11, b는 switch문 안에서 여러 번 수정되며 최종 결과를 확인하는 문제.swap(a, b)는 main의 a, b에는 영향을 주지 못함.switch(a) 실행 시 a=11 → case 11:으로 진입.break를 만나기 전까지 아래 구문들을 연속 실행(fall-through).b += 2 → b에 2 더함b += 3 → b에 3 더함a=11, b=19
swap(a, b) 실행 → 값 복사만 교환됨 → 원본 a=11, b=19 그대로
3 switch(a) → case 11 실행
b += 2 → b = 21default 실행 (fall-through)b += 3 → b = 24a - b = 11 - 24 = -13-13
이 문제에서 꼭 알아야 할 개념:
switch는 break 없으면 연속 실행 → case 11 → default까지 실행됨.