C, C++ 언어

C언어 기초 7. 조건문, if 문

게임플밍마스터 2025. 9. 24. 10:46

지금까지 우리가 작성한 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 문에 대해 배워보겠습니다.