18.3 else에서 중괄호 생략하기

elseif와 마찬가지로 실행할 코드가 한 줄이면 중괄호를 생략할 수 있습니다.

if_else_omit_brace.c

#include <stdio.h>
 
int main()
{
    int num1 = 10;
 
    if (num1 == 10)
        printf("10입니다.\n");
    else
        printf("10이 아닙니다.\n");    // 실행할 코드가 한 줄이라면 중괄호 생략
 
    return 0;
}

실행 결과

10입니다.

if, else로 실행할 코드가 두 줄 이상일 때 중괄호를 생략하면 컴파일 에러가 발생합니다.

if_else_omit_brace_two_lines_error.c

#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_else_omit_brace_two_lines_error.c(10): error C2181: if와 짝을 이루지 않는 잘못된 else문입니다.

if, else로 실행할 코드가 두 줄 이상이라면 반드시 중괄호로 묶어주세요.

if_else_brace_two_lines.c

#include <stdio.h>

 int main()
{
    int num1 = 10;
 
    if (num1 == 10)
    {    // if로 실행할 코드가 두 줄 이상이라면 중괄호로 묶어줌
        printf("if 조건문\n");
        printf("10입니다.\n");
    }
    else
    {    // else로 실행할 코드가 두 줄 이상이라면 중괄호로 묶어줌
        printf("else\n");
        printf("10이 아닙니다.\n");
    }
 
    return 0;
}

실행 결과

if 조건문
10입니다.

만약 다음과 같이 if 다음에는 중괄호로 묶어주고 else에서는 생략한다면 컴파일 에러는 발생하지 않겠지만 의도하지 않은 동작이 되어버립니다.

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

여기서는 if 조건식 결과와는 관계 없이 "10이 아닙니다."가 항상 출력됩니다. 따라서 if, else를 사용할 때는 중괄호 사용에 주의합니다.