본문 바로가기
C언어

[C언어] Switch 문의 사용법과 주의사항

디지털노마드 2023. 1. 13.
반응형

요즘에 C언어로 개발을 하면서 여러가지 문법이 헷갈린다. -_-

C언어에서의 기본적인 Switch 문은 아래와 같다. 

 

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

 

case 문 마다 break 바로바로 걸어주고

예외처리를 위해서 default 도 귀찮지만 적어주고 나름 온갖(?) 노력을 다해서 

코드를 작성 중이다. ㅋㅋ

 

 

그런데 실제로 스위치문을 타고 어디까지 들어오는지 확인하기 위해 

아래와 같이 코드를 작성했다. 

 

int a = 0

switch(expression) {

    a = 1;

    case x:

        a = 2;

        break;

    case y:

        a = 3;

        break;

    default:
        
        a = 4;

        break;

    printf("%d\n", a);
}

 

a라는 변수를 만들어서 case x 까지 들어오면 a는 2가 되고 마지막에 

print 문에서 2를 찍는 방법이다. print 문에 대한 부담이 큰 embedded 개발중에 유용하게 써먹고 있는데, 

계속해서 컴파일 에러가 나는 것이다. 그것도 a = 1; 여기 부분에서. 

 

아니 왜 저기서 에러가 자꾸 나지 하고 보니까, 

스위치 문의 분기점에서 저 부분으로 갈 일이 전혀 없는 구간에 

변수에 값을 대입했다. 

 

사실 컴파일러에 따라서 별 의미 없는 부분이니

그냥 넘어가도 되었겠지만, 이놈의 내가 쓰는 컴파일러는 (IAR Workbench : 약 500만원 ㅋㅋㅋ)

아주 친절한건지 꼼꼼한건지 저거저거 저기 지우라고 썽을 내더라. 

 

int a = 0

switch(expression) {

    // a = 1;
    // 삭제

    case x:

        a = 2;

        break;

    case y:

        a = 3;

        break;

    default:
        
        a = 4;

        break;

    printf("%d\n", a);
}

 

삭제하니까 잘 돌아간다. 후후후. 

반응형

댓글