C language(c언어)

Switch문

computerchild 2024. 1. 29. 21:09
728x90
반응형

안녕하십니까 저의 블로그 구독자여러분들 (실제 있는지는 모름) 정말 너무 오랜만에 뵙습니다.

마지막으로 올린게 작년 11월이니... 시험기간도 겹치고 연말이라 모임도 많고(평소에나 좀 봐야되는데)

아무튼 다시 열심히 올리도록 하겠습니다. 잡설은 그만하고 바로 공부 시작하겠습니다.

 

오늘 배울 내용은 Switch문 입니다. if문의 베스트 프렌드인 switch문(음?)에 대해 배워봅시다.

베스트 프렌드인 이유는 switch문의 하는 일이 if문과 매우 비슷하기 때문입니다(아하!)

아래의 간단한 강아지 시뮬레이션 figure.1을 보면서 설명하겠습니다.

figure.1

 

figure.2

성공적으로 컴파일 하였다면 figure.2같은 결과를 볼 수 있습니다.

이처럼 3가지 명령에 대해 반응하고 3가지 명령 외에 명령은 "무슨 명령인지 못 알아 듣겠어" 라고 강아지가 이야기를 합니다.

그런데 만약 강아지가 10가 이상의 명령에 반응하게 하고싶다면 기존에 우리가 배운 데 까지라면 if문과 else if문을 계속해서 쓰면서 해야할 것 입니다. 그렇게되면 코드가 굉장히 길어지고, 보기도 지저분해서 안개발자스러울 것입니다.

따라서 이를 switch문을 적용하면 깔끔하고 원하는 목표를 얻을 수 있습니다. figure.3는 그 예시입니다.

figure.3

결과는 figure.2과 동일할 것입니다. 여기서 오늘 우리가 배울 switch문에 대해 더 자세히 보도록 합시다.

switch문의 기본 구조는 figure.4와 같습니다.

figure.4

변수 부분에는 값1, 값2 ...들과 비교할 변수가 들어가게 됩니다. figure.3에서는 변수에 input값이 들어가게 되겠죠?

이때 주의할 점은 switch문에 사용될 변수로는 반드시 정수 data를 보관하는 변수여야 합니다. 즉 char, short, int, long들 중 하나여야지, float, double 등 이라면 오류가 발생하게 됩니다.

그래서 만약 변수 == 1이면 case 1에 대한 명령들이 출력됩니다. 그리고 break를 만나 switch문에서 빠져 나오게 됩니다.

또한 주의할 점은 값에 위치하는 것들은 무조건 상수여야 합니다. 변수를 넣게 되면 오류가 발생하게 되는데 이는 아래에서 다시 설명하겠습니다.

 

그리고 switch문의 default는 if문의 else와 같은 역할을 합니다. 즉 이것도 아니고 저것도 아닌 것들이 오는 case인 것이죠.

그리고!!!! 책에서도 다시 강조했지만 절대로 break문을 잊지마세요. 만약 break문을 생략한다면 아래 case들까지 전부 실행이 되어 만일 1번 case를 선택하게 된다면 figure.5같은 끔찍한 사고가...

figure.5

 

또 다른 switch문 예를 보겠습니다. figure.6입니다.

figure.6

figure.6을  성공적으로 컴파일 하면 input값에 case에 해당하는 값을 넣으면 그것에 발음을 출력해주겠죠?

 

그런데 말입니다. 한가지 의문이 생깁니다? switch문은 정수데이터만 처리한다고 했는데, 왜 여기서는 문제 데이터도 처리가 될까요? 그 이유는... 바로 .....

 

 

 

 

컴퓨터는 문자와 숫자를 구분 못합니다(???바보인가) 컴퓨터는 문자를 모두 숫자로 처리한 뒤(어벤져스? 어셈블리어로 처리) 우리에게 보여줄 때만 다시 문자로 보여주기 때문입니다. 따라서 문자 = 정수라고 생각하셔도 무방하십니다.

 

 

자 그러면 이제 마지막으로 if-else문과 switch-default문은 무슨 차이가 있을까요? 이 부분에 대해서 알아보고 오늘 마무리 하도록 하겠습니다. 이 부분은 저도 사실 잘 이해가 정확히 되지 않아서 옮겨 적기보다는 원문 그대로 올려드리도록 하겠습니다!  원문에서 추천하는 링크는 다음과 같습니다. https://blog.naver.com/kki2406/80041410085

 

이번 포스트도 읽어주시느라 고생들 하셨습니다. 다음시간에 뵙겠습니다~

 

if~else와 switch~case 문의 차이점 ( 성능, 메모리 관점 )

if~else문과 switch~case 문의 차이점에 관해서 알아보자...  코드는 다음과 같이 작성해보았다... &n...

blog.naver.com

 

 

728x90
반응형