if~else if~else문 개념
if~else if~else문이란 if문이 조건에 따른 실행 문장을 3개 이상 갖고 있는 경우에 그 중에 1개를 꼭 선택해야 하는 때 if~else if~else문을 사용합니다.
예컨대 , 변수 k의 값에 따라 a의 값이 1,2,3 중에 하나로 결정 돼야 하는 경우에 사용될 수 있습니다. 아래 예제를 봅시다.
- k값이 0보다 크면 a의 값은 1이 된다.
- k값이 0이면 a의 값은 2가 된다.
- k값이 0보다 작으면 a의 값은 3이 된다
if ( k > 0 ) //조건식1
{
a = 1 ; //실행문1
}
else if ( k == 0) //조건식2
{
a = 2 ; //실행문2
}
else // if(k < 0)의미이므로 조건식3으로 볼 수 있음
{
a = 3 ; //실행문3
}
위의 예제를 프로그램으로 만들어 그 실행 흐름을 알아 봅시다.
1.#include <stdio.h>
2.
3.int main(void)
4.{
5. int k = 0, a = 0;
6.
7. if (k > 0) // k가 0보다 크면 a에 1 대입 한다.
8. {
9. a = 1;
10. }
11. else if (k == 0) // k가 0이면 a에 2 대입 한다.
12. {
13. a = 2;
14. }
15. else // k가 0보다 크지 않고 0도 아니면 a에 3 대입
16. {
17. a = 3;
18. }
19.
20. printf("a : %d\n", a); // if문으로 결정된 a값 출력을 한다.
21.
22. return 0;
23.}
if~else if~else문에서는 조건이 여러 개입니다.
따라서 , 첫 번째 조건을 만족 하는지 부터 검사합니다.
7행의 조건( k > 0) 을 조사하여 그 결과가 true(참)이면 9 행의 a = 1을 실행 합니다. 그 이후의 실행 문장들은 모두 건너 뛰고 20 행으로 진행 합니다.
그러나 , 조건 검사 결과가 거짓( false )이라면 두 번째 조건 검사로 넘어 갑니다.
첫 번째 조건 검사 결과 false(거짓)이 나오면 11 행의 두 번째 조건 ( k == 0)이 참인가를 판단 합니다. 판단 결과가 참이라면 13 행의 실행 문장a = 2 를 수행 합니다.
그리고 , 15 행의 else 부분을 수행 하지 않고 20 행으로 넘어 갑니다.
만약 거짓이라면 세 번째 조건인 else 문장으로 갑니다.
첫 번째 조건 , 두 번째 조건이 모두 거짓이라면 else문의 실행 문장인 17 행의 a = 3 이 실행 됩니다. 왜냐하면 if~else if~else 문은 전술한 바와 같이 3개 이상의 실행 문장 중에서 1개가 반드시 실행 된는 구조를 갖고 있기 때문 입니다.
위 예제에서도 9 행 , 13 행 , 17 행 중 하나는 반드시 실행 됩니다.
실행 결과는 a : 2 입니다.
변수 k 가 5 행에서 0으로 초기화가 이루어 졌습니다. 따라서 , k 의 값이 0 이므로 11 행의 조건 k == 0 을 만족하여 13 행의 실행 문장이 수행 되기 때문 입니다.
if~else if~else문 주의 사항
if~else if~else문은 조건에 따른 실행 문장이 3 개 이상인 경우에 주로 사용 됩니다.
그런데 , 주의 할 점은 조건의 충족 여부를 순서 대로 검사하다가 특정 조건이 일단 만족 되면 그에 따른 실행 문장이 실행 되고 다른 조건들은 더 이상 검사 하지 않고 건너 뛴다는 사실 입니다.
위에서 살펴본 예제에서 조건이 1개 더 추가된 if~else if~else문을 학습 해 봅시다.
아래 예제를 봅시다.
if (k > 0) // k가 0보다 크면 a에 1 대입한다.
{
a = 1 ;
}
else if (k == 0) // k가 0이면 a에 2 대입 한다.
{
a = 2 ;
}
else if (K == -1) //추가된 조건 k가 -1이면 a에 3을 대입 한다.
{
a = 3 ;
else // k가 0보다 크지 않고 0도 아니면 a에 4 대입 한다.
{
a = 4 ;
}
먼저 살펴 본 예제보다 k == -1 이라는 조건이 하나 더 추가된 사례 입니다.
프로그램의 실행 방식이나 주의 할 사항은 동일 합니다.
중괄호 묶기
if~else~if문도 단순 if문 , if~else문과 동일하게 조건에 따른 실행 문장이 2 개 이상이면 반드시 중괄호로 묶어 주어야 원하는 결과를 얻을 수 있습니다.
이 점에 관하여는 전술 하였으니 파란색 링크를 참조 하면 됩니다.