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에 세미콜론을 붙이면 if와 printf는 관계가 없이 떨어진 상태가 됩니다. 즉, 중괄호 없이 한 줄로 코드를 만들면 관계가 없는 상태가 좀 더 명확하게 보일 것입니다.
읽을거리
학교에서 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만 실행됩니다. 여기서는 num1에 5가 들어있으므로 조건식이 거짓이라 "if 조건문"은 출력되지 않지만, 뒤에 오는 printf는 if와 관계 없이 항상 실행되므로 "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; }