PROGRAMMING/C

C언어 switch 문

쪼렙엔지니어 2022. 10. 13. 08:00
반응형

오늘은 C언어 기초문법의 마지막 시간으로 switch문에 대해서 알아보고자 합니다. switch문은 우리가 예전에 배웠던 if문과 비슷합니다. if문의 경우 조건에 부합하면 해당 조건에 종속되어 있는 명령프로그램을 실행하는 문법이었죠. switch도 거의 흡사한데 아주 조금 다릅니다. 그럼 문법 형식과 예제를 통해 차이점과 사용법에 대해서 알아보도록 하겠습니다. if문에 대해서는 아래 포스팅을 참조해 주십시오.

https://mech19.tistory.com/174

 

C언어 if 문

자 오늘은 본격적인 C언어의 문법을 시작해 보겠습니다. 바로 if문 입니다. if문은 개발에 관심이 없으신 분들도 많이 들어보셨을 정도로 유명합니다. if 어쩌고 저쩌고 블라블라블라..... 영화나

mech19.tistory.com

https://mech19.tistory.com/175

 

C언어 if - else 문 ( else if 문 )

자 지난시간에는 if문의 기본 문법에 대해서 이야기 해 보았습니다. 오늘은 이어서 if else문에 대해서 이야기 해 보겠습니다. else는 영어로 그 외에, 그 밖에 라는 의미를 가지고 있는데 C언어에서

mech19.tistory.com

 

1. switch문 형식

switch문의 문법 형식은 기본적으로 위와 같은 형식을 가집니다. case의 갯수는 필요한만큼 늘릴 수 있습니다. 그리고 case의 값을 우리가 switch의 변수 부분에 입력하면 해당되는 csae의 명령이 실행되는 형태이죠. 그리고 각 case의 마지막에 break문이 붙어 있으므로 switch문에서 탈출하게 됩니다. 그럼 예제를 통해서 좀 더 진지하게 알아볼까요?

2. switch문 예제

제일제일 기본적인 switch문 예제라고 할 수 있겠네요. 아! 정수형 변수를 선언할 때 처음으로 한글로 "변수"를 입력했는데, 변수를 선언할 때는 한글도 사용이 가능한것 알고 계시죠? 그리고 해당 변수의 값을 입력받는 프로그램을 6번과 7번라인에 printf함수와 scanf_s함수를 사용하여 작성한 뒤에 switch문을 사용하였습니다.

실행 될 때는 우리가 입력한 숫자에 맞는 case의 명령프로그램이 실행됩니다. 여기서 중요한 것은 switch의 변수 자리에 오는 변수타입은 숫자만 가능한데, 소수점 단위의 실수는 사용하면 안됩니다. 다만 char 타입의 변수는 사용이 가능합니다. char타입의 변수의 값도 컴퓨터에서는 숫자로 인식하기 때문이죠. 대신에 case에 char타입의 변수를 사용할 때는 아래와 같이 따옴표를 사용해 주어야 합니다. 이유는 잘 아시죠? 따옴표를 사용하지 않으면 사용한 값을 변수 그 자체로 보기 때문에 프로그램이 정상작동 하지 않습니다.

그리고 변수타입을 char로 바꾸면 문자를 입력받는 것이기 때문에 입력과 출력문구도 숫자가 아니라 문자로 변경해 주어야 하고, 입/출력 타입도 %c로 변경 해 주어야 합니다. 까먹지 마세요. 그러고 보니 한번도 실행을 시켜보질 않았네요. 그럼 실행해서 실행결과가 어떻게 나오는지 한번 보겠습니다.

정상적으로 실행결과가 나오는 것을 확인할 수 있었습니다. 그런데 여기서 한가지 의문점이 발생합니다. 바로 예외처리는 어떻게 할 수 있는가 입니다. if문의 경우 else를 통하여 조건에 맞지 않는 모든상황을 통합하여 실행될 명령프로그램을 지정할 수 있었습니다. switch문에도 그런 기능이 있을까요? 네. 당연히 있습니다. 바로 알아보도록 하겠습니다.

3. switch문의 예외처리 default

위에서 작성하였던 예제프로그램에서 case에 명시되지 않는 변수값을 입력하게 되면 어떻게 될까요?

정답은 "아무일도 일어나지 않는다" 입니다. case를 a부터 d까지 4가지로 설정해 두었는데 입력값 f가 들어오자, 아무일이 일어나지 않고 프로그램이 종료되었습니다. 이럴 때 사용할 수 있는게 default입니다. 바로 아래 예제를 통해 알아보겠습니다.

switch문 마지막에 default를 붙였습니다. 선택한 문자를 출력하고 입력한 값이 잘못되었다는 문구를 출력하도록 하였습니다. 이번에 다시 f를 입력해 보겠습니다.

이번에는 f를 입력하자 default에 위차한 명령프로그램이 실행되는 것을 알 수 있습니다. 이렇게 switch문의 case에 맞지 않는 모든상황에 대하여 예외처리를 할 수 있는것이 default입니다.

오늘은 if문과 비슷하지만 약간 다른 switch문에 대해서 알아보았습니다. if문의 경우 입력한 값을 각각의 조건들과 순차적으로 비교해 보며 프로그램이 진행되지만 switch문의 경우 입력한 값에 맞는 case로 바로 넘어가게 되어있습니다. 이때 switch문이 사용하는 프로그래밍 방법이 jump table이라고 합니다. 이렇듯 비슷하지만 실행되는 프로세스가 완전히 다릅니다.

저는 입력하는 case가 정해져 있고, case가 동등한 레벨인 경우 switch문을 사용하고 나머지 상황에 대해서는 if문을 사용하는 편입니다. 연습을 하다보면 자신만의 기준이 생기고 여러가지 상황에 맞는 문법을 선택하는 능력이 생기게 될겁니다. 즉 연습을 통해 자신만의 방법을 갈고 닦아야 한다는 것이죠. 오늘은 여기까지 하겠습니다. 감사합니다.

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.

 

반응형