본문 바로가기
프로그래밍/C, C++

[C/C++] Switch문 쓸 때 가끔 하는 실수

by JR2 2022. 3. 20.

아래는 흔하게 볼 수 있는 Switch문이다.

#include <stdio.h>

int main() {
    int a = 3;
    switch(a){
      case 1:
        printf("1\n");
        break;  
      case 2:
        printf("2\n");
        break;  
      case 3:
        printf("3\n");
        break; 
      default:
        printf("0");
        break;
    }
    return 0;
}

당연히 실행결과는 3일 것이다.

 

하지만

이건 어떨까?

#include <stdio.h>

int main() {
    float a = 3.14;
    switch(a){
      case 1.23:
        printf("1.23\n");
        break;  
      case 2.34:
        printf("2.34\n");
        break;  
      case 3.14:
        printf("3.14\n");
        break; 
      default:
        printf("0");
        break;
    }
    return 0;
}

 

당연히 잘 돼야할 것 같은 코드가 이런 에러를 낸다.

clang-7 -pthread -lm -o main main.c
main.c:5:5: error: statement requires expression of integer type
      ('float' invalid)
    switch(a){
    ^      ~
1 error generated.
exit status 1

 

그 이유는 Switch문의 인자로 실수를 입력할 수 없기 때문이다.

댓글