본문 바로가기
📚 STUDY/🔥 C

[5-3] switch문

by 엄지잉 2024. 9. 5.

- 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