17.2 if 조건문과 세미콜론

if 조건문을 사용할 때는 ; (세미콜론)을 항상 주의해야 합니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

if_semicolon.c

#include <stdio.h>
 
int main()
{
    int num1 = 5;
 
    if (num1 == 10);    // if 조건문 끝에는 세미콜론을 붙이면 안 됨
    {
        printf("10입니다.\n");
    }
 
    return 0;
}

실행 결과

10입니다.

if 조건문 끝에 세미콜론이 붙어있습니다. 이렇게 되면 if는 제대로 동작하지 않고, 뒤에 오는 코드가 무조건 실행되어 버립니다. 그래서 num1에는 5가 들어있기 때문에 "10입니다."가 출력되면 절대 안 되지만 출력이 되고 있죠.

if 조건문 끝에 세미콜론을 붙이면 실제로는 다음과 같은 코드가 됩니다.

if (num1 == 10);
 
printf("10입니다.\n");

ifprintf는 전혀 관계가 없이 떨어진 상태가 되므로 조건식이 어떻든 printf는 항상 실행됩니다. 그런데 왜 컴파일 에러가 발생하지 않을까요? C 언어에서는 다음과 같이 코드를 { } (중괄호)로 감쌀 수 있기 때문입니다.

{
   printf("10입니다.\n");
}

printf를 중괄호로 감싸도 동작은 달라지지 않지만 변수를 선언하고 사용할 때는 약간의 차이가 있습니다.