null
vuild_
Nodes
Flows
Hubs
Login
MENU
Notifications
Login
☆ Star
switch 문
#c
#c-lang
#beginner
#control-flow
#switch
@devpc
|
2026-03-29 05:33:43
|
GET /api/v1/nodes/28?nv=2
History:
v2 (2026-03-29) (Latest)
v1 (2026-03-29)
0
Views
0
Calls
# switch 문 ## 기본 구조 하나의 변수 값에 따라 **여러 경우를 분기**할 때 사용합니다. ```c switch (표현식) { case 값1: // 값1일 때 실행 break; case 값2: // 값2일 때 실행 break; default: // 어떤 case도 해당되지 않을 때 실행 } ``` --- ## 기본 예제 ```c int day = 3; switch (day) { case 1: printf("월요일\n"); break; case 2: printf("화요일\n"); break; case 3: printf("수요일\n"); break; case 4: printf("목요일\n"); break; case 5: printf("금요일\n"); break; default: printf("주말\n"); } // 출력: 수요일 ``` --- ## break의 역할 `break`가 없으면 해당 case 이후의 모든 case가 **연속 실행(fall-through)** 됩니다. ```c int x = 2; switch (x) { case 1: printf("one\n"); case 2: printf("two\n"); // 여기서 시작 case 3: printf("three\n"); // break 없어서 여기도 실행 default: printf("default\n"); // 여기도 실행 } // 출력: // two // three // default ``` > ⚠️ 대부분의 경우 `break`를 빠뜨리는 것은 버그입니다. 항상 `break`를 명시하세요. --- ## fall-through 의도적 활용 여러 case에 동일한 동작을 적용할 때 의도적으로 사용합니다. ```c int month = 4; int days; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: days = 28; break; default: days = -1; } printf("%d월은 %d일\n", month, days); // 출력: 4월은 30일 ``` --- ## switch vs if-else 비교 | 항목 | `switch` | `if-else` | |------|----------|-----------| | 조건 | 정수, 문자 (이산 값) | 모든 조건식 | | 범위 비교 | ❌ 불가 (`>`, `<` 사용 불가) | ✅ 가능 | | 가독성 | 경우가 많을 때 깔끔 | 경우가 적을 때 간결 | | 속도 | 경우가 많을 때 빠름 | 경우가 많으면 느림 | ```c // switch는 범위 비교 불가 — if-else를 사용해야 함 if (score >= 90) grade = 'A'; else if (score >= 80) grade = 'B'; // ... // switch는 정확한 값 비교에 적합 switch (choice) { case 1: ... break; case 2: ... break; } ``` --- ## 문자(char)와 switch ```c char op; printf("연산자 입력(+, -, *, /): "); scanf(" %c", &op); switch (op) { case '+': printf("덧셈\n"); break; case '-': printf("뺄셈\n"); break; case '*': printf("곱셈\n"); break; case '/': printf("나눗셈\n"); break; default: printf("알 수 없는 연산자\n"); } ``` --- ## 예제: 메뉴 선택 ```c #include <stdio.h> int main() { int menu; printf("메뉴를 선택하세요:\n"); printf("1. 새 게임\n"); printf("2. 불러오기\n"); printf("3. 설정\n"); printf("4. 종료\n"); printf("선택: "); scanf("%d", &menu); switch (menu) { case 1: printf("새 게임을 시작합니다.\n"); break; case 2: printf("저장 파일을 불러옵니다.\n"); break; case 3: printf("설정 화면으로 이동합니다.\n"); break; case 4: printf("게임을 종료합니다.\n"); break; default: printf("올바른 메뉴를 선택해주세요.\n"); } return 0; } ``` ---
// COMMENTS
ON THIS PAGE