if~else

if ~else

if~else문

if문은 실행문이 1개일 때 그 실행문을 실행 할 것인가실행 안 할 것인가에 관하여 선택을 해야 합니다.
이에 비하여 if~else문은 실행문이 2개일 경우 그 중에 실행할 문장 하나를 선택해야만 하는 때에 사용합니다.
다음 예제를 봅시다.

if ( variable >= 0)  //조건식
{    
     variable = 1 ;  //실행문 1
}
else
{
     variable= -1 ;  // 실행문 2
}

위의 예제는 변수 variable 이 0보다 크거나 같으면 1을 대입하고 0보다 작으면 -1을 대입하는 예제입니다.

또 다른 예제를 봅시다.

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

위 예제의 실행 결과는 variable : 1 입니다.
if~else문은 7행에서 14행 입니다.
5행에서 변수 variable 을 10으로 초기화 했습니다. 따라서 , 7행의 조건을 충족합니다. 따라서 ,9행의 실행문이 실행됩니다.

만일 variable 의 초기값이 0보다 작다면 9행의 실행문은 생략하고 13행의 실행문을 수행하여 결과값은 -1 이 됩니다.

따라서 앞에서 언급한 것과 같이 if~else문은 2개의 실행문 중에서 1개는 꼭 실행되는 구성을 하고 있습니다. 그 이유는 다음과 같습니다.

if~else문은 if에만 조건식이 존재합니다. else에는 조건식이 없습니다. 따라서 , 1 개의 조건식이 충족 되지 않을 경우 당연히 else 부분이 실행이 됩니다.

중괄호 묶기 와 if~else

if문과 같이 if~else문도 if 부분 또는 else 부분의 실행문이 1개일 경우에는 아래 예제와 같이 중괄호 생략이 가능합니다.

if(number > 0)
  number = 1 ; //실행문 1개
else
  number = -1 ; // 실행문 1개

그러나 , if 부분 또는 else 부분의 실행문이 2개 이상이라면 꼭 중괄호로 묶어야 합니다. 이에 관한 예제와 설명은 링크를 참조 하면 됩니다. (if문과 중괄호)

if~else문이 if문보다 효율적인 경우

모든 경우에 적용 되는 원리는 아닙니다. 그러나 때에 따라 , 즉 if문의 2번 사용으로 만들어진 프로그램을 if~else 1번 사용으로 변환 될 수 있는 경우에는 효율적입니다. 2개의 단순한 if문이 사용 되어진 프로그램이 1개의 if~else문이 사용된 것으로 바꿀 수 있는 아래 예제를 봅시다.

if ( n >= 0)  // 예제 1번
{
   n=1 ;
}
if (n < 0)
{ 
   n=-1 ;
}

if ( n >= 0)  // 예제 2번
{ 
    n =1 ;
}
else
{
    n=-1 ;
}

위의 예제 1번과 예제 2번은 동일한 실행 결과를 산출합니다. 예컨대, n이 5라면 두 예제 모두 n은 1이 나옵니다. 또 n이 -5라면 n은 -1이 나옵니다.
따라서 , 1번 예제보다는 2번 예제가 보다 효율적 입니다. 왜냐하면 , 동일한 결과를 산출하는데 예제 1번은 두 번의 조건 검사의 과정을 거쳐야 합니다. 반면에 예제 2번은 검사를 한 번만 하면 족합니다. 실행 속도 면에서도 당연히 예제 2번이 더 좋습니다. 그래서 2 개의 실행문 중에서 양자 택일을 해야 할 경우에는 웬만하면 if~else문을 사용해서 프로그램을 작성하는 것이 좋습니다.