오랫만에 글을 올리네요.


개인적인 사정으로 바빠서 올리지 못 한 점 양해 부탁드립니다.




이번 글에서는 if ~ else 문과 if ~ else if ~ else 문을 다루도록 하겠습니다.



1. if ~ else 문


if 문하고 if ~ else 문의 차이점은 처음 보자마자 알 수 있듯이 else 가 추가 된 것입니다.


if 문은 조건을 검사 후 조건 성립하면 실행하고, 조건 성립하지 않으면 실행을 하지 않고 다음 문장으로 넘어갑니다.


if ~ else 문 if 부분에서 조건이 성립하지 않을 경우 else 문의 내용을 실행합니다.


반대로 if 부분에서 조건이 성립하면 else 문의 내용을 실행하지 않습니다.


예제를 통해 알아보도록 하겠습니다.



[ if 문의 조건이 성립할 경우 ]



[ if 문의 조건이 성립하지 않을 경우 ]


위의 예제에서처럼 if 문의 조건이 성립하지 않았을 경우 실행할 것을 else 문을 통해서 실행할 수 있습니다.






2. if ~ else if ~ else 문


if ~ else if ~ else 문은 조건검사 효율 문제 때문에 사용한다고 보시면 됩니다.


바로 예제를 통해 알아보도록 하겠습니다.



[ if 문의 비효율성 ]


위의 예제를 사람이 보면 단순히 '조건이 맞는 것만 실행하고 나머지는 실행하지 않는다' 라고 생각을 하기 쉽습니다.


하지만 C언어에서는 4가지의 if 문에 있는 조건문을 전부 검사합니다.


그렇게 되면 필요하지 않은 것들까지 조건을 검사하게 되서 그만큼 효율이 떨어지게 됩니다.


그렇다면 if ~ else if ~ else 문을 예제를 통해 알아보도록 하겠습니다.



[ if 문의 비효율성 해결을 위한 if ~ else if ~ else 문 ]


위 예제에서는 if 문의 비효율성을 해결하기 위해 if if if 대신 if ~ else 문 중간에 else if 를 추가 한 것입니다.


위 예제와 같이 코드를 작성하게 될 경우, if 문의 조건이 성립하지 않고, 두 번째 if 문 대신 들어간 else if (opt == 2) 문장이 참일 경우 해당 문장을 실행하고, 나머지 else if (opt == 3) 부터 else 문 까지는 실행을 하지 않고 바로 24번 째 줄의 printf("결과: %f \n", result); 문으로 넘어가게 됩니다.


이렇듯 if 를 연속적으로 사용하여 조건 검사를 매 회 계속 하는 것보다 else if 를 사용하여 조건이 성립 할 경우 남은 조건 문을 실행하지 않도록 하여 효율성을 높이는 방법이 훨씬 보기에도 편하고, 사용에 익숙해지면 편하게 사용 가능합니다.






3. if ~ else 문과 if ~ else if ~ else 문의 구조


if ~ else 문과 if ~ else if ~ else 문의 구조는 다음 예제를 통해 알아보도록 하겠습니다.



[ if ~ else 문, if ~ else if ~ else 문의 구조 ]


위 예제에서 확인 가능 하듯 if ~ else 문은 if 문의 조건식이 성립하지 않을 경우 else 문을 실행하는 구조입니다.


if ~ else if ~ else 문의 경우


if 문의 조건식이 성립하지 않아도 else if 문 조건 성립 또는 모든 조건이 성립하지 않아 else 문을 실행하는 구조로 되어 있습니다.


또한 if ~ else if ~ else 문에서 else if 부분은 추가로 else if 를 삽입 가능합니다.






이것으로 if ~ else 문, if ~ else if ~ else 문에 대하여 알아 보았습니다.



다음에는 반복문의 생략과 탈출에 사용되는 continue 와 break 에 대하여 글을 올리도록 하겠습니다.









'프로그래밍 언어 > C' 카테고리의 다른 글

C언어 공부 관련!  (0) 2019.08.16
C언어 조건문 - if 문 (1)  (0) 2017.01.26
C 언어 반복문의 중첩  (0) 2017.01.15
C언어 반복문 - for문 (2)  (0) 2017.01.15
C언어 반복문 - for문 (1)  (0) 2017.01.12

+ Recent posts