Programming/C Basic

6. C 언어 조건 분기문 - Switch문

양디 2016. 1. 14. 00:15



Switch?

Switch는 조건 분기문으로, if와 else if의 연속을 보다 보기 쉽게, 편리하게 만들어놨다고 생각하시면 좋습니다.


switch는 혼자 쓰이는게 아니라 항상 casedefault와 함께 쓰입니다.


보통 메뉴를 고르거나, 특정 선택지가 주어졌을 때에 그 대답에 따라 실행하는 코드가 다를 때에 주로 사용됩니다.


사용 문법은 다음과 같습니다.


3 + 7은 몇인가요 ? 


1번 : 6

2번 : 8

3번 : 10

4번 : 12


라는 질문에 대한 대답을 switch 문으로 처리한다고 해봅시다.

정답의 번호를 받는 변수를 ans 라고 가정해보겠습니다.


1
2
3
4
5
6
7
8
9
10
switch(ans){
    case 3
        printf("정답입니다!");
        break;
    case 1case 2case 4:
        printf("틀렸습니다!");
        break;
    default:
        printf("1~4 중에 하나를 입력해주세요!");
}
cs


위와 같은 코드가 나오게 됩니다.


1번처럼 switch(기준이 되는 변수) 를 부르고 중괄호를 엽니다.

중괄호 내부에는 각각의 case 에 해당하는 코드를 작성해줍니다.

case가 3일 경우는 case 3 : 이라는 코드로 표현합니다.

1이거나, 2거나, 4일 경우는 5번과 같이  case 1case 2case 4: 로 표현해줍니다.


중요한 점은, case가 끝나면 break 키워드를 사용해 주어야 합니다.

그러지 않을 경우, 케이스에 해당하는 코드를 실행하고 다른 케이스의 코드까지 실행하는 불상사가 생길 수도 있습니다.


마지막으로 8번 줄의 default는 , ans에 들어 있는 값이 1도 2도 3도 4도 아닐 경우에 실행됩니다.


switch문은 결국 if/else 문으로 바꿔서 쓸 수도 있습니다.


1
2
3
4
5
6
if(ans==3)
    printf("정답입니다!");
else if(ans == 1||ans == 2 || ans == 4)
    printf("틀렸습니다!");
else
    printf("1~4 중에 하나를 입력해주세요!");
cs


위와 같이 말이죠. 


처음으로 3번에서 || 표시가 나왔네요.


C에서는 and와 or 표시가 각각 && 와 || 로 표현됩니다.


And는 둘 다 참일 경우 참이 되는 것이고, Or는 둘 중에 하나가 참이면 참이 되는 것입니다.


|| 표시는 Shift + \ 를 누르면 사용 할 수 있습니다.


따라서 3번의 else if 문의 내용은, ans가 1이거나, 2이거나, 4일 경우 라는 뜻이 되겠지요.


이번 코딩에서는 코드가 if문이 더 짧았지만, 일반적인 경우는 switch 문이 더 간결하게 만들 수 있습니다.


또한 보기에도 훨씬 깔끔하니, 다양한 선택지에 코드가 달라질 경우 switch 문을 사용하는 것이 바람직합니다.

(보기에 깔끔하다는 것은 코딩에 있어서 매우 중요한 영역입니다.)


문제

혹시 옛날에 한창 유명했던, 숫자송 기억하시나요 ?


1 일초라도 안보이면
2 이렇게 초조한데
3 삼초는어떻게 기다려 이야이야이야
4 사랑해 널 사랑해
5 오늘은 말할꺼야
6 육십억 지구에서 널만난건
7 럭키야
(사랑해 요기조기 한눈팔지말고 나를봐
좋아해 나를향해 웃는미소 매일매일 보여줘)
8 팔딱팔딱 뛰는가슴 
9 구해줘 오내마음
10 십년이가도 너를사랑해~


네, 설마가 그 설마입니다.


숫자를 하나 입력 받고, 그 숫자에 해당하는 우측의 가사를 출력하는 C 프로그램을 코딩해 봅시다 !




댓글