18.3 else에서 중괄호 생략하기
else도 if와 마찬가지로 실행할 코드가 한 줄이면 중괄호를 생략할 수 있습니다.
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를 사용할 때는 중괄호 사용에 주의합니다.