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처럼 num110이면서 num220일 때 코드를 실행하도록 조건식을 지정할 수 있습니다. 여기서 &&는 논리 연산자이며 "두 식이 모두 만족할 때"를 뜻합니다(논리 연산자에 대해서는 '‎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");