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");
if와 printf는 전혀 관계가 없이 떨어진 상태가 되므로 조건식이 어떻든 printf는 항상 실행됩니다. 그런데 왜 컴파일 에러가 발생하지 않을까요? C 언어에서는 다음과 같이 코드를 { } (중괄호)로 감쌀 수 있기 때문입니다.
{ printf("10입니다.\n"); }
printf를 중괄호로 감싸도 동작은 달라지지 않지만 변수를 선언하고 사용할 때는 약간의 차이가 있습니다.