본문 바로가기
IT 기술/C언어

C언어 제어문(switch 조건문)_14일차

by 썬's 2023. 2. 10.

안녕하세요 보글리아입니다.

저번 시간에는 조건문 중 if 조건문을 알아봤는데요...

그럼 이번 시간에는 이어 또 다른 조건문인 switch 조건문을 배워보도록 하겠습니다.

※제 수업은 이전주차에서 배운 개념을 재차 설명드리지 않습니다※

※본 수업에 들어가기 앞서 수업 내용을 먼저 요약하고 세부적인 설명에 들어가겠습니다※

 


요약

  • switch문은 특정 변수의 값이나 변수끼리의 수식의 결과 값을 여러 case의 상수 값과 비교한다.
  • swtich문의 case에는 상수값만 사용이 가능하다.
  • switch문의 모든 case가 거짓일 때, default 값이 실행된다.
  • switch문을 빠져나가고 싶을 때는 break를 걸어준다. 단 break를 걸어 준 case가 참일 때만 해당한다.

switch 조건문

C언어에는 두 개의 조건문이 있습니다. 하나는 if 계열 조건문과 다른 하나는 switch 조건문이 있습니다.

이 중 switch 조건문을 알아보겠습니다. switch 조건문은 정해진 상수들이 있으면, 이 상수들과 직접적인 비교가 가능한 문법 구조로 되어 있습니다. switch 조건문은 조건 수식을 포함해서 모든 수식에 사용이 가능해 그 수식을 처리하여 얻은 결과 값을 case문에 있는 상수 값과 비교하여 명령을 수행합니다.

 

switch 조건문의 형태는 다음과 같습니다. 

즉, switch 조건문은 case에 따라 실행할 명령을 나누는 기능을 가집니다.

switch(조건 수식)
{
case 상수값: 실행할 명령; break;
caes 상수값: 실행할 명령; break;
case 상수값: 실행할 명령; break;
default : 모든 case가 아닐 시 실행할 명령
}

 

하단 코드를 보겠습니다. 일단 break는 다음 코드에서 설명드리겠습니다.

 

먼저 변수 a를 선언하고 값을 4 대입했습니다. 그리고 switch 조건문의 조건 수식에는 a를 적었습니다. 여기서 조건 수식에 a를 작성했다는 말은 모든 case를 비교해 case의 값이 4인 명령문을 출력한다는 의미입니다.

첫 번째 case부터 순서대로 조건을 검사합니다. a의 값이 1이 아니기 때문에 case 1의 값을 출력되지 않습니다. 마찬가지로 case 2, 3도 a의 값이 각각 2와 3이 아니기 때문에 넘어갑니다. 마지막 case 검사에서 값이 4이기 때문에 4번째 case의 문장이 출력된 것을 보실 수 있습니다.

 

여기서 의아하신 점이 보이실 겁니다. default는 모든 case문의 조건이 아닐 때 출력되는 문장 아닌가요??라고 생각하실 수 있는데, default는 무조건 작성하시면, default 문장이 출력이 됩니다. 애초애 default를 작성한다는 이유는 모든 case가 거짓이라고 판단된다고 했을 때 작성합니다. 하지만 만약 모든 case 중 참이 있으면, default와 같이 문장이 출력됩니다.

default는 저번 시간에 배운 else문과 동일한 기능을 한다고 보시면 됩니다.

#include <stdio.h>

int main()
{
	int a = 4;

	switch (a)
	{
	case 1: printf("a는 1이 아닙니다 \n"); // 1
	case 2: printf("a는 2도 아닙니다 \n"); // 2
	case 3: printf("a는 3이 아닙니다 \n"); // 3
	case 4: printf("a는 4가 맞습니다 \n"); // 4
	default: printf("a는 1, 2, 3이 아닙니다 \n"); // else와 동일
	}

	return 0;
}

출력 결과
출력 결과

이번에는 swtich 조건문에 있는 break를 알아보겠습니다.

break 문은 간단합니다. 모든 case를 검사하는 중 참인 case문이 나왔을 때, 뒤에 있는 case문과 default문의 문장을 출력하지 않고 즉시 switch문을 종료하는 역할을 합니다.

즉 break는 영단어 뜻대로 switch문을 종료하겠다는 의미입니다.

 

다시 하단 코드를 보겠습니다.

이번에는 변수 a 선언 후 값을 3 대입했습니다. 그리고 모든 case에 break를 걸어줬습니다. 마찬가지로 switch 조건문에 조건 수식에 a를 대입하고 각 case마다 검사를 수행합니다. 첫 번째와 두 번째 case문의 상수값인 1과 2는 변수 a의 값과 동일하지 않아 건너뜁니다. 세 번째 case문에서 상수값이 3이 참이라 해당 case문의 문장을 출력하고 break를 받아 switch문을 종료합니다. 

 

여기서 주의하실 점은 특정 case에 break를 적는다고 해서 그 case문에서 switch 조건문이 종료되는 것은 아닙니다. 각 case를 검사하는 데 break문이 있어도 그 해당 case가 참이 아니면 자동으로 다음 case를 검사합니다.

즉 break는 해당 case의 값이 참일 때만 switch 조건문을 종료합니다.

#include <stdio.h>

int main()
{
	int a = 3;

	switch (a)
	{
	case 1: printf("a는 1입니다 \n"); break; // a는 1이 아니라 break를 건너띄고 다음 case문 검사
	case 2: printf("a는 2입니다 \n"); break; // a는 2도 아니라 break를 건너띄고 다음 case문 검사
	case 3: printf("a는 3입니다 \n"); break; // a는 3이기 때문에 여기서 switch문 종료
	case 4: printf("a는 4입니다 \n"); break; // switch문 종료로 검사하지 않음
	case 5: printf("a는 5입니다 \n"); break; // switch문 종료로 검사하지 않음
	default: printf("a는 1, 2, 4, 5가 아닙니다 \n"); // switch문 종료로 검사하지 않음
	}

	return 0;
}

 


오늘은 저번 시간에 배운 if 계열 조건문에 이어 switch 조건문을 알아봤습니다.

그럼 다음 시간에는 또 다른 제어문인 반복문을 배워보도록 하겠습니다.

긴 글 읽으시느라 너무너무 고생 많으셨습니다~~

댓글