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문을 사용해서 프로그램을 작성하는 것이 좋습니다.