지금까지 우리가 작성한 c언어 코드는 main 함수 첫 줄부터 마지막 줄까지 한 줄도 빠짐없이 순서대로 실행되었습니다. 마치 외길을 걷는 것과 같았죠. 하지만 똑똑한 프로그램은 갈림길에서 상황에 맞는 길을 선택할 줄 알아야 합니다. "만약 비가 온다면, 우산을 챙겨라. 그렇지 않다면, 그냥 가라." 와 같은 판단 능력이 필요합니다.
C언어에서는 if 문을 사용하여 이러한 '조건에 따른 실행'을 구현합니다. if 문을 배우는 순간, 여러분의 프로그램은 비로소 '지능'을 갖추기 시작합니다.
1. 가장 기본적인 선택, if 문
if는 '만약 ~라면'이라는 뜻입니다. if 문은 괄호 () 안의 조건이 '참(True)'일 경우에만, 바로 뒤에 오는 중괄호 {} 안의 코드를 실행합니다. 조건이 '거짓(False)'이라면 중괄호 안의 코드는 무시하고 건너뜁니다.
기본 구조:
if (조건식)
{
// 조건식이 참(1)일 때 실행될 코드
}
// if 문이 끝나고, 프로그램은 여기서부터 계속됩니다.
여기서 조건식에는 6장에서 배운 비교/논리 연산자가 주로 사용됩니다. 그 결과가 '참(1)'이 되면 코드가 실행되는 것이죠.
예제: 성인 인증 프로그램
사용자에게 나이를 입력받아, 20살 이상일 경우에만 "성인입니다."라고 출력하는 프로그램을 만들어 봅시다.
#include <stdio.h>
int main(void)
{
int age;
printf("나이를 입력하세요: ");
scanf("%d", &age);
if (age >= 20)
{
printf("성인입니다. 입장을 환영합니다.\\n");
}
printf("프로그램을 종료합니다.\\n");
return 0;
}
실행 결과 (age에 25 입력 시):
나이를 입력하세요: 25
성인입니다. 입장을 환영합니다.
프로그램을 종료합니다.
실행 결과 (age에 17 입력 시):
나이를 입력하세요: 17
프로그램을 종료합니다.
17을 입력했을 때는 age >= 20 조건이 거짓(0)이 되므로, if 문 안의 printf는 실행되지 않고 건너뛴 것을 볼 수 있습니다.
2. 참이 아닐 경우엔? else 문
위 예제에서는 17살을 입력했을 때 아무런 안내 메시지가 나오지 않아 조금 불친절합니다. "만약 성인이라면 A를 하고, 그렇지 않다면 B를 해라" 와 같이 조건이 거짓일 때 실행할 코드를 지정하고 싶다면 else를 사용합니다. else는 '그렇지 않으면' 이라는 뜻입니다.
기본 구조:
if (조건식)
{
// 조건식이 참일 때 실행될 코드
} else {
// 조건식이 거짓일 때 실행될 코드
}
예제: 성인/미성년자 구분 프로그램
#include <stdio.h>
int main(void)
{
int age;
printf("나이를 입력하세요: ");
scanf("%d", &age);
if (age >= 20)
{
printf("당신은 성인입니다.\\n");
}
else
{
printf("당신은 미성년자입니다.\\n");
}
return 0;
}
이제 나이가 20살 미만이어도 "당신은 미성년자입니다." 라는 메시지가 친절하게 출력됩니다.
3. 여러 갈래의 선택지, else if 문
세상에는 '예/아니오' 두 가지로만 나눌 수 없는 복잡한 상황들이 많습니다. "성적이 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C, 그 외에는 F" 와 같이 여러 갈래의 선택지가 필요할 때가 있죠. 이럴 때 else if를 사용합니다.
기본 구조:
if (조건식1) {
// 조건식1이 참일 때 실행
} else if (조건식2) {
// 조건식1은 거짓이고, 조건식2가 참일 때 실행
} else if (조건식3) {
// 앞의 모든 조건이 거짓이고, 조건식3이 참일 때 실행
} else {
// 위의 모든 조건이 거짓일 때 실행
}
if-else if 구조는 위에서부터 순서대로 조건을 확인하다가, 참인 조건을 처음 만나는 순간 그 블록의 코드를 실행하고, 나머지 else if나 else 부분은 모두 건너뛰고 구조 전체를 빠져나옵니다.
예제: 학점 계산기
#include <stdio.h>
int main(void)
{
int score;
printf("점수를 입력하세요 (0~100): ");
scanf("%d", &score);
if (score >= 90) {
printf("당신의 학점은 A입니다.\\n");
} else if (score >= 80) {
printf("당신의 학점은 B입니다.\\n");
} else if (score >= 70) {
printf("당신의 학점은 C입니다.\\n");
} else if (score >= 60) {
printf("당신의 학점은 D입니다.\\n");
} else {
printf("당신의 학점은 F입니다.\\n");
}
return 0;
}
만약 85점을 입력했다면, score >= 90은 거짓이므로 통과, score >= 80은 참이므로 "B입니다"를 출력한 뒤 if-else if 구조 전체를 빠져나옵니다.
4. [꿀팁] 중괄호 {}의 생략
만약 if, else if, else 블록 안에 실행할 코드가 단 한 줄일 경우에는 중괄호 {}를 생략할 수 있습니다.
if (age >= 20) printf("성인입니다.\n");
처럼 말이죠. 하지만 이 방식은 코드를 추가하거나 수정할 때 실수를 유발하기 매우 쉽습니다. 초보자일 때는 코드가 한 줄이더라도 항상 중괄호 {}를 사용하는 습관을 들이는 것이 안전하고 좋습니다.
5. [도전! 프로그래밍] 짝수 홀수 판별기
if 문과 6장에서 배운 %(나머지) 연산자를 함께 사용하여, 사용자에게 정수 하나를 입력받아 그 숫자가 '짝수'인지, '홀수'인지, 아니면 '0'인지를 알려주는 프로그램을 작성해 보세요.
힌트:
- 어떤 수를 2로 나눈 나머지가 0이면 그 수는 짝수입니다.
- 0은 짝수도 홀수도 아닌 특별한 경우로 따로 처리해 봅시다. if 문을 가장 먼저 사용해서요.
이번 장 정리
- if: 조건식이 참일 때만 코드를 실행합니다.
- if-else: 조건식이 참일 때와 거짓일 때 각각 다른 코드를 실행합니다.
- if-else if-else: 여러 조건 중 하나를 선택하여 코드를 실행하게 해줍니다.
- 조건식의 결과가 참(1)이면 실행, 거짓(0)이면 건너뜁니다.
- 실수를 방지하기 위해 실행할 코드가 한 줄이어도 항상 중괄호 {}를 사용하는 것이 좋습니다.
if 문을 통해 여러분의 프로그램은 비로소 상황에 맞는 판단을 내리는 능력을 갖추었습니다. if-else if 체인은 매우 강력하지만, 하나의 변수를 여러 특정 값과 비교해야 할 때는 코드가 다소 길어질 수 있습니다. 다음 장에서는 이럴 때 코드를 더 깔끔하게 만들어주는 switch 문에 대해 배워보겠습니다.
'C, C++ 언어' 카테고리의 다른 글
| C언어 기초 9. 반복문, for 문 (0) | 2025.10.14 |
|---|---|
| C언어 기초 8장 : 여러 선택지 중 하나, switch 문 (0) | 2025.10.13 |
| [C언어기초] 6. 프로그램의 핵심 도구, 연산자(Operator) 완벽 정복하기 (3) | 2025.07.13 |
| [C언어기초] 5. 입출력문 (2) | 2025.07.03 |
| [C언어기초] 4. 컴퓨터의 기억 상자, 변수와 자료형 (3) | 2025.07.01 |