Switch문
C언어에서 switch문은 여러 조건 분기를 관리하는 데 있어 매우 유용한 도구이다. 특히, 하나의 변수를 여러 값과 비교해야 할 때 if-else문보다 더 간결하고 명확한 코드를 작성할 수 있게 해준다. 이번 포스팅에서는 switch문의 기본 사용법, 장점, 그리고 주의해야 할 사항에 대해 자세히 알아보겠다.
⭐ 1. Switch문 기본 사용법
switch문은 표현식의 결과값에 따라 다양한 분기(case)로 코드의 실행 경로를 결정한다. 기본 구조는 다음과 같다.
switch (표현식) {
case 값1:
// 값1일 때 실행할 코드
break;
case 값2:
// 값2일 때 실행할 코드
break;
// 여러 case 추가 가능
default:
// 어떤 case도 매칭되지 않을 때 실행할 코드
}
⭐ 2. Switch문 장점
- 가독성: switch문은 여러 if-else문을 사용하는 것보다 훨씬 가독성이 좋은 코드를 작성할 수 있게 한다.
- 효율성: 컴파일러는 switch문을 최적화하여, 조건 분기를 더 효율적으로 처리할 수 있다.
⭐ 3. 주의사항
- switch문에서 사용할 수 있는 표현식은 정수형 타입이나 열거형(enum)으로 평가될 수 있는 것에 한정된다.
- 각 case 뒤에는 반드시 break문을 사용하여, 다음 case로의 실행이 이어지지 않도록 해야 한다. break문을 생략하면, 아래의 case로 "fall through"되어 의도하지 않은 결과를 초래할 수 있다.
- default는 모든 case와 매칭되지 않을 때 실행되는 선택적인 부분이다. 모든 경우를 다루고 싶다면 default를 사용하는 것이 좋다.
⭐ 4. 코드
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Invalid day\n");
}
return 0;
}
⭐ 5. Fall Through
Fall through는 때때로 다음과 같은 상황에서 유용하게 사용됩니다.
- 여러 case 조건이 같은 동작을 수행해야 할 때 코드 중복을 피하기 위해
- 한 case에서 추가 작업을 수행한 후 공통 작업을 수행하는 다음 case로 진행해야 할 때
주의사항은 아래와 같다.
<ul"text-align: left;" data-ke-list-type="disc">
- Fall through는 코드의 의도를 명확히 하기 위해 주석을 달아 사용 의도를 명시하는 것이 좋다.
- 복잡한 switch 문에서는 가독성을 저하시키고 오류를 유발할 수 있으므로, 사용 시 주의가 필요하다.
#include <stdio.h>
int main() {
int userChoice;
printf("메뉴를 선택하세요:\n");
printf("1 - 기본 정보 보기\n");
printf("2 - 상세 정보 보기\n");
printf("3 - 추가 정보 보기\n");
printf("4 - 프로그램 종료\n");
scanf("%d", &userChoice);
switch (userChoice) {
case 1:
printf("기본 정보를 출력합니다.\n");
// 여기에 기본 정보 출력 로직을 추가합니다.
// break가 없으므로 case 2로 fall through합니다.
case 2:
printf("상세 정보를 출력합니다.\n");
// 여기에 상세 정보 출력 로직을 추가합니다.
// case 1을 선택한 경우 기본 정보와 상세 정보 모두 출력됩니다.
// break가 없으므로 case 3로 fall through합니다.
case 3:
printf("추가 정보를 출력합니다.\n");
// 여기에 추가 정보 출력 로직을 추가합니다.
// case 1 또는 2를 선택한 경우, 상응하는 정보와 함께 추가 정보도 출력됩니다.
break;
case 4:
printf("프로그램을 종료합니다.\n");
break;
default:
printf("잘못된 선택입니다. 다시 시도해주세요.\n");
}
return 0;
}
switch문은 특정 변수가 다양한 값을 가질 수 있을 때, 각각의 경우에 대해 별도의 로직을 실행하고 싶을 때 매우 유용하다. 특히, 가능한 값이 많고, 그 중 하나를 선택해야 할 때 if-else문보다 훨씬 깔끔한 코드를 작성할 수 있다. 그러나, 사용 시에는 break문을 적절히 사용하는 것과 정수형 또는 열거형으로 평가될 수 있는 표현식만을 사용하는 것을 기억해야 한다.
728x90
반응형
'Language > C언어' 카테고리의 다른 글
[C/C++ Tip] 19. C언어 조건문 마스터하기 : 삼항연산자 (0) | 2024.11.05 |
---|---|
[C/C++ Tip] 18. C언어 조건문 마스터하기 : if문의 모든 것! (0) | 2024.11.05 |
[C/C++ Tip] 17. Static 변수와 Extern 변수의 차이점 (1) | 2024.11.02 |
[C/C++ Tip] 16. Extern 중복 문제 해결 (Include Guard) (0) | 2024.11.02 |
[C/C++ Tip] 15. extern 기본 (0) | 2024.11.02 |