#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 함수
- swap(a, b) 호출했지만 값이 복사돼서 넘어감
- 지역변수끼리 바뀌고 끝나므로 main 함수의 a, b 값은 안 바뀜
- 따라서 여전히 a=11, b=19 유지됨
2 . switch문 시작
- switch(a) → 현재 a=11
- case 11 맞음 → 여기부터 실행됨
b += 2; // b = 19 + 2 → 21
break 없어서 default 도 이어서 실행됨
b += 3; // b = 21 + 3 → 24
이제 b=24
printf 출력
printf("%d", a-b);
= 11 - 24
= -13
출력 결과 → -13
핵심 정리
- C 언어에서 함수 인자 전달은 값 복사(call by value) 임
→ swap 실행해도 원래 변수는 안 바뀜 - switch 문에서 break 없으면 밑으로 계속 실행(fall-through) 됨
→ case 11 이후 default 까지 실행됨 - 최종 결과는 -13 나옴
한줄평
속을뻔
출처
'정보처리기사' 카테고리의 다른 글
| 2024년 정보처리기사 실기 3회 7번 문제 공부 및 풀이 (0) | 2025.09.27 |
|---|---|
| 2024년 정보처리기사 실기 3회 2번 문제 공부 및 풀이 (0) | 2025.09.27 |
| 2024년 정보처리기사 실기 2회 17번 문제 공부 및 풀이 (0) | 2025.09.25 |
| 2024년 정보처리기사 실기 2회 15번 문제 공부 및 풀이 (0) | 2025.09.24 |
| 2024년 정보처리기사 실기 2회 13번 문제 공부 및 풀이 (0) | 2025.09.24 |