안녕하세요.
이번에는 분기 제어문을 정리하겠습니다.
1. 분기 제어문(분기문)
1) 의미
- 분기 제어문(분기문)이란 일정한 조건에 맞춰 내용을 실행하는 제어문입니다.
2) 종류
- if 문 : if / else if / else
- 조건 연산자 : 조건 / ? / :
- switch 문 : switch / case / default
2. if 문
1. 단순 if 문
1) 의미
- 단순 if 문이란 조건의 참인 경우 내용을 실행하는 제어문입니다.
2) 사용 구조
if(조건)
{
}
> 조건이 참(true, 0이 아닌 경우)이라면 블록을 실행합니다.
3) 사용예(test11.c)
#include <stdio.h>
int main(void)
{
int num = 10;
if(num > 0)
{
printf("양수입니다.\n");
}
return 0;
}

> 변수 num 이 관계연산에서 true를 반환하고, 그 결과 조건이 참이 되어 블록이 실행됩니다.
2. if / else 문
1) 의미
- if else 문이란 조건이 참인 경우 if 의 블록을 실행하고, 그 외의 조건은 else 의 블록을 실행하는 제어문입니다.
2) 사용 구조
if(조건)
{
}
else
{
}
> 조건이 참인 경우 if 블록을 실행하고, 그 외의 경우 else 블록을 실행합니다.
3) 사용예(test12.c)
#include <stdio.h>
int main(void)
{
int num;
printf("숫자 입력 : ");
scanf("%d", &num);
if(num % 2 == 0)
{
printf("짝수입니다.\n");
}
else
{
printf("홀수입니다.\n");
}
return 0;
}

> num 의 나머지 연산을 통한 결과와 0을 관계연산한 결과 true 인 경우 if 블록을, false 인 경우 else 블록을 실행합니다.
이 경우 3은 else 블록을, 4는 if 블록을 실행하였습니다.
3. if / else if / else 문
1) 의미
- 조건이 참인 여러 경우를 정의할 때 사용하는 제어문입니다.
- if 는 첫 조건을 명시하고, else if 는 그 다음의 조건을 명시합니다. else 는 그 외의 조건들을 처리합니다.
2) 사용 구조
if(조건)
{
}
else if(조건)
{
}
else
{
}
> else if 는 여러 개가 될 수 있습니다.
3) 사용예(test13.c)
#include <stdio.h>
int main(void)
{
int score;
printf("점수 입력 : ");
scanf("%d", &score);
if(score >= 90)
{
printf("A 학점\n");
}
else if(score >= 80)
{
printf("B 학점\n");
}
else if(score >= 70)
{
printf("C 학점\n");
}
else
{
printf("F 학점\n");
}
return 0;
}

> 사용자의 입력에 따른 조건의 관계연산을 수행하고, 일치하는 블록을 실행시킵니다.
만약 하나도 일치되지 않으면 else 문을 실행합니다.
2.1 조건 연산자
1) 의미
- 조건 연산자란 if else문의 형식을 간단하게 표현한 연산자입니다.
- 조건이 참이면 전자의 값을, 거짓이면 후자의 값을 대입합니다.
- 유일한 삼항 연산자입니다.
2) 사용 구조
변수 = (조건) ? a : b;
max = (a > b) ? a : b;
3) 사용예
#include <stdio.h>
int main(void)
{
int num = 10;
int result = (num > 0) ? 1 : 0;
if(result == 1)
{
printf("num은 양수입니다.");
}
else
{
printf("num은 양수가 아닙니다.");
}
return 0;
}

> 조건 연산자의 조건이 참이 되어 정수 1을 result 에 대입하고, 이를 통해 if 블록을 실행할 수 있었습니다.
3. switch 문
1) 의미
- 다수의 값에서 여러 분기를 할 경우 사용하는 제어문입니다.
- if / else if / else 문은 판단으로 조건을 사용했지만, switch 문은 판단으로 하나의 값을 사용합니다.
- 보통 값에는 변수가 주로 들어갑니다.
2) 사용 구조
switch(Value)
{
case value1 :
// action
case value2 :
// action
case value3 :
// action
default :
// action
}
> switch의 Value와 case의 value1, value2, value3 을 비교하여 일치하는 내용이 실행되고, 일치하는 case 가 없다면 default 내용이 실행됩니다.
3) 전체실행
- switch 문은 기본적으로 전체 문장이 모두 실행됩니다.
- 위의 예제를 봤을 때 case value1 이 일치되어 실행되어도, case value2, case value3 은 차례대로 실행된다는 의미입니다.
- 물론 default 는 전체 case 가 실패했을 경우에만 실행됩니다.
3.1) break
- 하지만 개발자는 case value1 과 case value2 등에 대한 각 case 를 분기시키고 싶을 수 있습니다.
- 이 때 break 키워드를 사용하면 조건에 맞는 내용만 실행하고 switch 문을 건너뛸 수 있습니다.
switch(Value)
{
case value1 :
// action
break;
case value2 :
// action
break;
case value3 :
// action
break;
default :
// action
}
> 예를 들어 switch의 Value와 value1이 틀리다면 case value2로 이동하게 됩니다.
이 때 만약 switch의 Value와 value2 가 일치하다면 내용이 실행되고, break 키워드로 switch 문을 탈출하게 됩니다.
4) 사용예(test15.c)
#include <stdio.h>
int main(void)
{
int menu;
printf("메뉴 선택 (1. 햄버거 2. 피자 3. 파스타) : ");
scanf("%d", &menu);
switch(menu)
{
case 1:
printf("햄버거 선택\n");
break;
case 2:
printf("피자 선택\n");
break;
case 3:
printf("파스타 선택\n");
break;
default:
printf("잘못된 입력\n");
}
return 0;
}

> 각 입력에 대한 case 에 맞게 출력을 하고, break 키워드로 switch 문을 탈출한 후 프로그램을 종료합니다.
1, 2, 3 선택지가 아닌 경우는 전부 default case 로써 "잘못된 입력" 을 출력합니다.
'C > Study' 카테고리의 다른 글
| C언어 : 9. 배열과 문자열 (0) | 2026.05.26 |
|---|---|
| C언어 : 8. 함수 (0) | 2026.05.25 |
| C 언어 : 6. 루프 제어문 (0) | 2026.05.19 |
| C언어 : 5. 연산자 (0) | 2026.05.19 |
| C언어 : 4. 문자열과 입출력 (0) | 2026.05.18 |
