C언어 SWITCH문 & if문

지환·2021년 12월 29일
0

C언어

목록 보기
7/37
post-thumbnail

Switch문

  • if문이 비효율적인 경우, switch문을 사용하면 된다. switch 조건문은
    정해진 상수들과 직접적인 비교를 할 수 있는 문법으로 되어있다.
  • switch문은 "변수 값이 이미 정해져 있는 상수들과 비교할 때는 switch 조건문이 유리하다."

<전체적인 흐름>

switch문을 빠져나오는 break문

  • case문을 보면 break라는 예악어를 사용했고, break문은 현재 수행하는 case문의 작업을 중단하는 의미다.

  • 수식의 결과 값이 '상수1'과 일치하는 경우엔 '명령문2'만 수행하고 '상수2'와 일치할 때 '명령문3'만 수행한다.

조건 수식과 일치하면 case , 상수가 없으면 수행하는 default문

  • default문은 수식의 결과 값이 case문을 사용해 열거한 상수들과 일치하는 값이 없는 경우에 수행할 명령을 적는 곳이다. if조건문의 else문이 하는 역할과 같다.
  • 결과 값이 case에 해당하는 값과 일치하는 것이 없으면 '명령문5' 수행한다.
    -switch 조건문의 형식상 break문을 가장 마지막에 두는데, 마지막에 break문이 없더라도 수행할 명령이 없어서 switch문이 종료되기 때문에 이 break문은 생략할 수 있다.
  • 또한 default문도 반드시 사용해야 하는 것이 아니기 떄문에, 사용할 필요가 없으면 생략할 수 있다.

switch문을 사용하여 점수에 따른 등급 사용하기


int main()
{
	int score = 85;
	char grade;
	switch (score / 10) {
	case 10:
	case 9:
		grade = 'A';
		break;
	case 8:
		grade = 'B';
		break;
	case 7:
		grade = 'C';
		break;
	case 6:
		grade = 'D';
		break;
	default:
		grade = 'F';
		break;

	}
	printf("당신의 점수는 %d점이고, 등급은 %c이다.\n", score, grade);



}
  • 이전에 if~else문을 사용하여 했던 예제를 switch문으로 구현했다.
  • if조건문은 범위를 비교하도록 조건 수식이 구성되어있고, switch문은 상수와 같은지를 비교하는 형식이 된다.
  • 그래서 점수를 10으로 나누어서 case문마다 상수로 비교할 수 있게 구성했다.
  • case 10에 break가 없는 이유는 90점 이상이 'A'인데 90~99까지는 몫이 9지만, 100점은 10이라서 10도 9와 같게 처리하면 되기 떄문이다.

-앞의 예제를 순서도로 나타내면 이와 같다.

  • switch문은 수식의 결과 값 또는 변수의 값을 여러 개의 상수 값과 비교하는 데 장점이 있다.
  • 하지만 case문에 상수가 아닌 변수를 적을 수 없다.

<출처 : DO IT C언어 - 김성엽>

profile
아는만큼보인다.

0개의 댓글