[C] C언어 기초

[C] C언어의 조건문_switch문

ITsubin 2022. 3. 30. 00:54

이번 포스팅에서는 C언어의 조건문 中 하나인 switch문(switch~case문)을 알아보겠습니다.

switch문은 if~else문을 보다 간결하게 표현할 수 있어서 가독성이 좋습니다.

다만 if~else문에 비해서는 약간의 제약이 있습니다.

 

switch문 안에서의 case문은 콜론( : )으로 구분합니다.

 

거두절미하고 예시부터 보겠습니다.

아래의 예시에서는 변수 a가 1일 경우, 2일 경우, 3일 경우, 4일 경우를 각각

case1, case2, case3, case4로 나누어 각 문장이 출력되도록 하였습니다.

하지만 아래의 예시는 잘못된 예시입니다.

 

아래의 사진은 위의 예시를 실행하여 4를 입력한 결과입니다. 멀쩡히 잘 실행됩니다.

 

 

하지만, 두 번째 예시에서 1을 입력했음에도 불구하고, 모든 문장이 출력되었습니다.

이는, case 1에서의 구문은 멀쩡히 잘 실행되었지만, 따로 종료를 하지 않았습니다.

case 1이 실행되고 나서 switch문이 종료되지 않았기 때문에 case 2가 실행되고,

case 2 또한 실행된 후 종료되지 않았기 때문에 case 3이 실행되고, case 4 또한 마찬가지입니다.

 

 

이를 위해서는 "break문"이 필요합니다.

switch문에서 사용되는 break문switch문을 종료하는 역할을 합니다.

break문을 만나면 그 이후의 내용은 무시되고 switch문이 종료되는 것입니다.

 

아래의 예시는 첫 번째 예시에서 단지 각각의 case에 break문을 추가한 것입니다.

1을 입력할 경우, case 1의 구문이 실행됩니다.

printf("1을 선택하셨습니다.\n"); 문장이 먼저 실행되고,

break문에 의해 switch문이 종료되었기 때문에

switch 문의 나머지 case 2, case 3, case 4는 실행하지 않고 종료되었습니다.

 

 

break문 뿐 아니라, switch문에서는 default문도 사용됩니다.

default문은 switch문에서 정의한 case에 해당되는 조건이 없는 경우 수행됩니다.

 

두 번째 예시에 default문도 추가하였습니다.

1, 2, 3, 4가 아닌 다른 값을 입력하면 case에 해당되는 조건이 없기 때문에 default가 실행됩니다.

 

 

[ switch문과 if문의 비교 ]

아래의 두 예시는 switch문과 if문을 사용한 예시입니다.

if문을 사용했을 때보다 switch문을 사용했을 때 가독성이 더 좋은 것을 확인할 수 있습니다.

 

하지만 if(num>0)처럼 if문에서는 관계 연산을 사용 가능하지만, case문에서는 관계 연산이 올 수 없습니다.

또한, case 2.34 : 처럼 사용하는 것은 불가능합니다.

switch문에서는 실수 자료형을 사용하는 것은 불가능하기 때문입니다.