중첩 if문 (1)

if..again

중첩 if문 개념

중첩 if문은 if 문 내부에 또 if 문을 사용하는 것입니다. 즉 , if 문의 실행 문장으로 또 다시 if 문을 이용하면 중첩 if문이 되는 것입니다.

중첩 if문 구조

먼저 단순한 if문에 if~else문이 중첩된 예를 봅시다.

if (조건 1)
{
   if (조건 2)
    {
      실행 문장 1 ;
    }
    else 
     {
       실행 문장 2 ;
    }
}  

조건 1이 false( 거짓 ) 이라면 실행 되는 것이 없습니다.
거짓으로 인하여 중첩 if문이 뭐고 그냥 if문을 빠져 나갑니다.

이번에는 if~else문에 단순 if문이 중첩된 예를 봅시다.

if (조건 1)
{
    if (조건 2)
    {
       실행 문장 1 ;
     }
}
else
{
   실행 문장 2 ;
}

위 예제는 조건 1이 true( 참 )이라 해도 조건 2 가 거짓이면 아무것도 실행이 안됩니다.

선행 조건 검사

프로그램 작성을 할 때 주된 조건을 검사하기 전에 그 보다 먼저 조건을 검사 해야 하는 경우에 자주 사용 됩니다. 아래 예제를 봅시다.

if (a > 10)
{
   if (b >= 0)
   {
      b = 1 ;
    }
    else
    {
       b = -1 ;
    }
}

위 예제에서 a > 10 이라는 조건이 충족되지 않으면 그 다음 조건은 묻지도 따지지도 않고 통과 합니다. 위 예제를 프로그램으로 만든 아래를 봅시다.

1.#include <stdio.h>
2.
3.int main(void)
4.{
5.	int a = 20, b = 10; //변수 a,b 선언과 초기화
6.
7.	if (a > 10) //a가 10보다 크면 9~16행 실행,작거나 같으면 18행으로 이동
8.	{
9.		if (b >= 0)   // b가 0 이상이면 b에 1 대입하고 18행으로 이동
10.		{
11.			b = 1;
12.		}
13.		else
14.		{
15.		    b = -1; // b가 0보다 작으면 b에 -1 대입하고 18행으로 이동
16.		}
17.	}
18.
19.	20.printf("a : %d, b : %d\n", a, b);
20.
21.	return 0;
22.}

위 예제의 실행 결과는 다음과 같습니다.
a : 20 , b : 1

5행의 변수 a 의 초기 값은 20 입니다. 따라서 7 행의 조건 a >10 이 true 이므로 9~16행의 if~else문을 실행 합니다. 9행에서 다시 조건 b >= 0 을 검사하여 b 가 1 인지 -1 인지를 결정 합니다.
그러나 , 7 행의 조건 검사 결과가 거짓이 산출 되었다면 9~16 행의 실행 블록은 고민의 여지 없이 실행 되지 않습니다.
따라서 , 선행 조건인 7 행의 조건이 만족 되어야 그 다음 절차가 진행 됩니다.
이처럼 중첩 if문은 선행 조건을 검사할 필요가 있는 경우에 자주 이용 됩니다.

중괄호 생략 여부

7 행의 if 문의 조건이 참(true)이라면 실행될 문장인 9~16 행의 if~else는 한 문장으로 간주됩니다. 따라서 , 8 행의 시작 중괄호 { 와 17행의 종료 중괄호는 생략이 가능 합니다. 그러나 , 전에 언급(if 문 들여 쓰기 와 중괄호) 하였 듯이 코드의 가독성 , 에러 발생 등과 관련하여 중괄호는 사용하는 것을 추천합니다.