18.5 조건식을 여러 개 지정하기
지금까지 if에 조건식을 하나만 지정했습니다. 만약 조건이 복잡할 때는 어떻게 해야 할까요?
예를 들어 인터넷 포털의 중고나라에 글을 올리려면 먼저 포털 사이트의 회원이면서 중고나라 카페의 회원이라야 합니다. 이 조건을 if 조건문으로 나타내면 다음과 같은 모양이 됩니다.
if 포털 사이트 회원인지? 그리고 중고나라 회원인지? { 글쓰기 화면 표시 } else { 포털 사이트 또는 중고나라 회원이 아니므로 글을 쓸 수 없다는 경고 문구 표시 }
if 조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
if_else_multiple_cond_exp.c
#include <stdio.h> int main() { int num1 = 10; int num2 = 20; if (num1 == 10 && num2 == 20) // num1이 10이면서 num2이 20일 때 printf("참\n"); else printf("거짓\n"); return 0; }
실행 결과
참
num1 == 10 && num2 == 20처럼 num1이 10이면서 num2이 20일 때 코드를 실행하도록 조건식을 지정할 수 있습니다. 여기서 &&는 논리 연산자이며 "두 식이 모두 만족할 때"를 뜻합니다(논리 연산자에 대해서는 'Unit 21 논리 연산자 사용하기'에서 자세히 설명하겠습니다).
참고 | if 조건문 안에 다시 if 조건문이 들어갈 수 있나요?
if 조건문는 안에 다시 if 조건문을 넣어서 여러 번 판단할 수 있습니다.
int num1 = 10; int num2 = 20; if (num1 == 10) { if (num2 == 20) // if 조건문 안에 if 조건문이 들어감 { printf("참\n"); } else { printf("거짓\n"); } } else { printf("거짓\n"); }
이처럼 if (num1 == 10) { if (num2 == 20) {는 if (num1 == 10 && num2 == 20)와 판단하는 방식이 같습니다. 즉, if 안에 들어와서 다시 if가 만족해야 하므로 두 조건이 모두 만족해야 하는 &&연산자와 결과가 같습니다.
다음과 같이 안쪽에 있는 if 조건문에서 실행할 코드가 한 줄인 경우 안쪽과 바깥쪽 if 조건문 모두 중괄호를 생략할 수 있습니다.
int num1 = 10; int num2 = 20; if (num1 == 10) if (num2 == 20) printf("참\n"); else printf("거짓\n"); else printf("거짓\n");