25.1 사용자가 입력한 값에 따라 문자열 출력하기
switch와 case를 간단하게 테스트 해보는 방법은 사용자가 입력한 값에 따라 문자열을 출력하는 것입니다.
switch (변수) { case 숫자1: 코드1 break; case 숫자2: 코드2 break; default: 코드3; break; }
다음 내용을 소스 코드 편집 창에 입력하세요.
switch_scanf.c
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지 #include <stdio.h> int main() { int num1; scanf("%d", &num1); // 값을 입력받음 switch (num1) // num1의 값에 따라 분기 { case 1: // 1일 때 printf("1입니다.\n"); break; case 2: // 2일 때 printf("2입니다.\n"); break; default: // 아무 case에도 해당되지 않을 때 printf("default\n"); break; } return 0; }
소스를 컴파일하여 실행한 뒤 1을 입력하고 엔터 키를 누르세요.
실행 결과
1 (입력) 1입니다.
1을 입력했으므로 "1입니다." 문자열이 출력됩니다. 각자 2와 다른 숫자를 입력하여 switch가 어떻게 동작하는지 살펴봅니다.
switch의 괄호 안에는 먼저 값을 판단할 변수를 지정합니다. 여기서는 scanf로 사용자의 입력을 받은 뒤 switch에 num1 변수를 지정했습니다. 그리고 case로 1일 때, 2일 때 그리고 default로 아무 case에도 해당하지 않을 때 실행할 코드를 지정하였습니다.
switch (num1) // num1의 값에 따라 분기 { case 1: // 1일 때 printf("1입니다.\n"); break; case 2: // 2일 때 printf("2입니다.\n"); break; default: // 아무 case에도 해당되지 않을 때 printf("default\n"); break; }
case 다음에는 반드시 값(리터럴)이 와야 하며 변수나 조건식은 올 수 없습니다. 그리고 case에 값을 지정했으면 : (콜론)을 붙여 준 뒤 다음 줄부터 실행할 코드를 입력합니다. 또한, 코드의 마지막에는 break를 입력합니다.
이 코드를 switch 분기문 대신 if 조건문으로 표현하면 다음과 같은 모양이 됩니다.
if (num1 == 1) // 1일 때 printf("1입니다.\n"); else if (num1 == 2) // 2일 때 printf("2입니다.\n"); else // 1도 아니고 2도 아닐 때 printf("default\n");
if는 첫 조건식 다음에 else if로 다른 조건식을 일일이 지정해줘야 합니다. 즉, 조건식이 바뀌지 않고 값만 바뀔 때는 switch가 적합하며, 값과 조건식이 모두 바뀔 때는 else if가 적합합니다.