Skip to content

13. else


1. 키워드

  • else
  • 분기(Branch)


2. else를 사용하여 두 방향으로 분기하기

  • if 조건문은 분기를 위한 문법이다.
  • 즉, 분기는 프로그램의 흐름을 둘 이상으로 나누는 것을 말한다.
  • 지금까지 if 조건문의 조건식에 만족하는 코드만 실행했다.
  • ifelse를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다.


3. else 사용하기

  • elseif 조건문 뒤에 오며 단독으로 사용할 수 없다.


if (조건식)
{
    코드1
}
else
{
    코드2
}


  • 다음 내용을 입력한 뒤 실행해 보자.


#include <stdio.h>

int main()
{
    int num1 = 5;

    if (num1 == 10)
    {
        printf("10입니다.\n");
    }
    else // if의 조건식이 만족하지 않을 때 코드를 실행
    {
        printf("10이 아닙니다.\n"); // num1은 10이 아니므로 "10이 아닙니다."가 출력됨
    }

    return 0;
}


  • elseif의 조건식이 만족하지 않을 때 코드를 실행한다.
  • 여기서는 num15가 들어있어서 num1 == 10을 만족하지 않으므로 elseprintf가 실행되어 "10이 아닙니다."가 출력된다.


001


  • 보통 if의 조건식이 만족하면 참, 만족하지 않으면 거짓이라고 부른다.
  • 즉, 조건식이 참이면 if의 코드가 실행되고, 거짓이면 else의 코드가 실행된다.


4. else와 세미콜론

  • if와 마찬가지로 else;(세미콜론)을 붙이지 않도록 주의해야 한다.


#include <stdio.h>

int main()
{
    int num1 = 10;

    if (num1 == 10)
    {
        printf("10입니다.\n");
    }
    else; // else에 세미콜론을 붙이면 안 됨
    {
        printf("10이 아닙니다.\n"); // else에 세미콜론을 붙였으므로 if의 결과와는 관계 없이 항상 실행됨
    }

    return 0;
}

// 10입니다.
// 10이 아닙니다.


  • else;을 붙여버리면 그 뒤에 오는 코드와는 관계가 없어져 버린다.
  • 따라서 조건식의 결과와는 관계없이 항상 실행된다.


5. else에서 중괄호 생략하기

  • elseif와 마찬가지로 실행할 코드가 한 줄이면 {}(중괄호)를 생략할 수 있다.


#include <stdio.h>

int main()
{
    int num1 = 10;

    if (num1 == 10)
        printf("10입니다.\n");
    else
        printf("10이 아닙니다.\n"); // 실행할 코드가 한 줄이라면 중괄호 생략

    return 0;
}


  • if, else로 실행할 코드가 두 줄 이상일 때 {}를 생략하면 컴파일 에러가 발생한다.


#include <stdio.h>

int main()
{
    int num1 = 10;

    if (num1 == 10)
        printf("if 조건문\n");
        printf("10입니다.\n");
    else // if로 실행할 코드가 두 줄 이상일 때 중괄호를 생략하면 컴파일 에러 발생
        printf("else\n");
        printf("10이 아닙니다.\n");

    return 0;
}

// if 조건문
// 10입니다.


  • if, else로 실행할 코드가 두 줄 이상이라면 반드시 {}로 묶어준다.


  • 만약 다음과 같이 if 다음에는 {}로 묶어주고 else에서는 생략한다면, 컴파일 에러는 발생하지 않겠지만 의도하지 않은 동작이 되어버린다.


if (num1 == 10)
{
    printf("if 조건문\n");
    printf("10입니다.\n");
}
else
    printf("else\n");
    printf("10이 아닙니다.\n"); // 중괄호가 없으므로 if의 결과와는 관계 없이 항상 실행됨


  • 여기서는 if 조건식 결과와는 관계없이 "10이 아닙니다."가 항상 출력된다.
  • 따라서 if, else를 사용할 때는 {} 사용에 주의한다.


6. if 조건문의 동작 방식 알아보기

  • C에서 if0일 때 거짓, 0이 아닐 때 참으로 동작한다.


#include <stdio.h>

int main()
{
    if (2) // 0이 아니므로 참
        printf("참\n");
    else
        printf("거짓\n");

    return 0;
}

// 참


  • if2를 넣었는데도 "참"이 출력된다.
  • 즉, -2, -1, 1, 2처럼 0이 아닌 양수와 음수를 넣으면 무조건 참이다.
  • 실수도 마찬가지로 0.0f는 거짓이며 0.0f가 아닌 값들은 참이다.


7. 조건식을 여러 개 지정하기

  • if 조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있다.


#include <stdio.h>

int main()
{
    int num1 = 10;
    int num2 = 20;

    if (num1 == 10 && num2 == 20) // num1이 10이면서 num2이 20일 때
        printf("참\n");
    else
        printf("거짓\n");

    return 0;
}

// 참


  • num1 == 10 & num2 == 20처럼 num110이면서 num220일 때 코드를 실행하도록 조건식을 지정할 수 있다.
  • 여기서 &&는 논리 연산자이며 "두 식이 모두 만족할 때"를 뜻한다.


if 조건문 안에 다시 if 조건문이 들어갈 수 있나요?

  • if 조건문은 안에 다시 if 조건문을 넣어서 여러 번 판단할 수 있다.


int num1 = 10;
int num2 = 20;

if (num1 == 10)
{
    if (num2 == 20) // if 조건문 안에 if 조건문이 들어감
    {
        printf("참\n");
    }
    else
    {
        printf("거짓\n");
    }
}
else
{
    printf("거짓\n");
}


  • 이처럼 if (num1 == 10) { if (num2 == 20) {if (num1 == 10 && num2 == 20)과 판단하는 방식이 같다.
  • 즉, if 안에 들어와서 다시 if가 만족해야 하므로 두 조건이 모두 만족해야 하는 && 연산자와 결과가 같다.


  • 다음과 같이 안쪽에 있는 if 조건문에서 실행할 코드가 한 줄인 경우 안쪽과 바깥쪽 if 조건문 모두 {}를 생략할 수 있다.


int num1 = 10;
int num2 = 20;

if (num1 == 10)
    if (num2 == 20)
        printf("참\n");
    else
        printf("거짓\n");
else
    printf("거짓\n");

References