17.3 if 조건문에서 중괄호 생략하기

if 조건문에서 실행할 코드가 한 줄이라면 다음과 같이 중괄호를 생략할 수 있습니다.

if_omit_brace.c

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

실행 결과

10입니다.

마찬가지로 if 조건문 끝에는 절대 세미콜론을 붙이면 안 됩니다.

if (num1 == 10);    // if 조건문 끝에는 세미콜론을 붙이면 안 됨
    printf("10입니다.\n");

if에 세미콜론을 붙이면 ifprintf는 관계가 없이 떨어진 상태가 됩니다. 즉, 중괄호 없이 한 줄로 코드를 만들면 관계가 없는 상태가 좀 더 명확하게 보일 것입니다.

읽을거리

학교에서 C 언어를 처음 배우면서 실습을 할 때 친구의 컴퓨터에 가서 if 조건문 끝에 ;을 붙이는 장난을 꽤 합니다. 코드는 제대로 짠 것 같은데 결과가 계속 이상하게 나와서 친구는 매우 당황하게 됩니다. if 뒤에 세미콜론을 붙여도 컴파일 에러가 나지 않기 때문에 문제를 발견하기가 쉽지 않죠. :D

if에서 실행할 코드가 두 줄 이상일 때는 중괄호 생략에 주의해야 합니다.

if_omit_brace_two_lines.c

#include <stdio.h>
 
int main()
{
    int num1 = 5;
 
    if (num1 == 10)
        printf("if 조건문\n");    // if에서 중괄호를 생략하면 첫 번째 줄만 실행됨
        printf("10입니다.\n");    // 중괄호가 없으므로 if의 결과와는 관계 없이 항상 실행됨
 
    return 0;
}

실행 결과

10입니다.

if로 실행할 printf가 두 개인데도 중괄호를 생략하면 첫 번째 printf만 실행됩니다. 여기서는 num15가 들어있으므로 조건식이 거짓이라 "if 조건문"은 출력되지 않지만, 뒤에 오는 printfif와 관계 없이 항상 실행되므로 "10입니다."가 출력됩니다.

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

if_brace_two_lines.c

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