- C언어에는 계단식 if문 대신 switch문을 사용할 수 있음.
// 1
if (grade == 4) {
printf("훌륭해요!")
} else if (grade == 3) {
printf("좋아요!");
} else if (grade == 2) {
printf("평균이네요!");
} else if (grade == 1) {
printf("좋지 않아요!");
} else if (grade == 0) {
printf("좀 더 노력하세요!");
} else {
printf("잘못된 학점입니다");
}
// 2
switch (grade) {
case 4:
printf("훌륭해요!")
break;
case 3:
printf("좋아요!");
break;
case 2:
printf("평균이네요!");
break;
case 1:
printf("좋지 않아요!");
break;
case 0:
printf("좀 더 노력하세요!");
break;
default:
printf("잘못된 학점입니다");
break;
}
- 대부분의 경우 switch문은 다음과 같은 구조를 가짐.
switch (expression) {
case constant-expression:
statements
…
case constant-expression:
statements
default:
statements
}
- 제어식 : switch라는 단어 다음엔 반드시 괄호로 둘러싸인 정수 표현식이 나와야 함.
- 조건 부호 : 각 조건은 다음 형식으로 부호가 붙여져야 함.
- 구문 : 각 조건부호 다음에 1개 이상의 구문이 올 수 있음. 굳이 복합문처럼 중괄호를 써줄 필요가 없음. 각 조건부호의 구문은 주로 break문으로 끝남.
📌 break 구문의 역할
- switch문에서 나오게 만듦. ✅ 프로그램 실행이 switch문 다음 구문으로 넘어가게 되는 것.
- break문이 필요한 이유 : '계산된 도약' 때문. 이게 없다면, 제어는 계속해서 다음 조건으로 넘어가게 될 것.
ex)
switch (grade) {
case 4:
printf("훌륭해요!")
case 3:
printf("좋아요!");
case 2:
printf("평균이네요!");
case 1:
printf("좋지 않아요!");
case 0:
printf("좀 더 노력하세요!");
default:
printf("잘못된 학점입니다");
}
- break문이 없음.
- grade가 3일 경우, 실행결과 : 좋아요!평균이네요!좋지 않아요!좀 더 노력하세요!잘못된 학점입니다
🌐 [프로그래밍] 날짜를 법률상의 서식으로 출력하기
🌐 date.c
/* 날짜를 미국 법적 형식으로 출력한다 */
#include <assert.h> /* 역자 추가 */
#include <stdio.h>
int main(void)
{
int month;
int day;
int year;
printf("날짜를 입력해주세요 (mm/dd/yy): ");
scanf("%d /%d /%d", &month, &day, &year);
printf("Dated this %d", day);
switch (day) {
case 1:
/* intentional fallthrough */
case 21:
/* intentional fallthrough */
case 31:
printf("st");
break;
case 2:
/* intentional fallthrough */
case 22:
printf("nd");
break;
case 3:
/* intentional fallthrough */
case 23:
printf("rd");
break;
default:
printf("th");
break;
}
printf(" day of ");
switch (month) {
case 1:
printf("January");
break;
case 2:
printf("February");
break;
case 3:
printf("March");
break;
case 4:
printf("April");
break;
case 5:
printf("May");
break;
case 6:
printf("June");
break;
case 7:
printf("July");
break;
case 8:
printf("August");
break;
case 9:
printf("September");
break;
case 10:
printf("October");
break;
case 11:
printf("November");
break;
case 12:
printf("December");
break;
/* 역자 추가 코드 */
default:
assert(0);
break;
}
printf(", 20%.2d.\n", year);
return 0;
}
💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.
'📚 STUDY > 🔥 C' 카테고리의 다른 글
[6-1] while (0) | 2024.09.05 |
---|---|
Q&A (들여쓰기 방식, switch 문 작성 방식) (0) | 2024.09.05 |
[5-2] if문 (2) | 2024.09.05 |
[5-1] 논리표현식 (0) | 2024.09.04 |
Q&A (pow, fmod, 연산자) (1) | 2024.09.03 |