if else와 다중 if문
if문에서 else가 붙으면 거짓일 경우에도 추가로 실행문이 붙게 된다. if(조건식)
a실행문; 일 경우 참이면 a실행문을 추가로 실행하는데, if(조건식) a실행문; else
b실행문; 일 경우에는 참이면 a실행문을 추가로 실행하고, 거짓이면 b실행문을 추가로 실행한다. else는 ‘아니면‘이라고 해석하면 좋다. (조건연산자와 완벽하게 비슷하다 조건연산자와 비교해서 보면 쉽다)
else if라는 경우도 존재한다. if가 ‘만약‘이고, else가 ‘아니면‘이면, else if는 위의 if가 ‘아니면 만약‘이 된다. 여기서도 한 else if조건식이 실행될 경우 나머지는 실행이 되지 않으며, 앞에 있는 if가 실행될 경우에, 나머지는 실행되지 않는다. 형식으로 보자면 if(조건식1) { 실행문1; }else if(조건식2){ 실행문2; }else if(조건식3){ 실행문3; }else { 실행문4; }
그리고 nested if라고 해서 if, else if스코프 안에 if, if else구문을 넣을 수도 있다.정말 쓰임새 많은 제어문중 하나이니 잘 알아두자.
switch/case 문
다중if문과 비슷한 분기문인 switch/case는 형식이 switch(식){ case 상수 값1: 실행문a; break; case 상수 값2: 실행문b; break; default: 실행문c; }가 된다.
switch식에서 결과가 반드시 정수 자료형으로 떨어져야 되는데,(문자도 정수로 볼수 있기에 문자도 상수 값으로 들어가도 된다) 실수일 경우 10.1f 와 10.1000000001f와 같아지는 오류가 생기기 때문에 정수여야만 된다.
사실 switch/case의 형식은 복잡하지만, 구조적이고 간단하기에 은근히 가독성 있고 쉽다. 그리고 break;는 스코프{ }를 벗어나는 것으로, case에 맞는 실행문이 실행된 후에 그 switch문의 스코프를 벗어나서 실행문이 이어지게 된다. break;가 없을 경우에는 case의 모든 경우의 실행문이 실행되는 불상사가 벌어진다. 까먹지 말고 꼭 case마다 붙이자.
goto문
goto는 ‘무조건‘이 붙는다. 별명은 ‘사악한(깜찍한?) 코드’ 왜 이런 별명들이 붙었는지는 이 goto문의 하는 일을 보면 된다. goto a;라고 하면 그대로 쭉 a: 로 이동한다. 그 사이에 있는 모든 코드는 무시해 버리는데, 그러기에 반복문과 만나면 엄청 치명적인 논리 오류가 생기게 된다. 그러기에 쓰는 이유가 매우 한정되어있는 제어문이다. 이 한정되어 있는 경우가 예외처리인데, 비유하자면 수영장에서 수영복을 빌리고 튜브를 빌리고 수영장에 입장하는데, 튜브을 빌리지 못해서 집으로 돌아갈 때, 이미 빌린 수영복을 반납할 때, goto문으로 수영장에서 입장하는 것을 건너뛰고 빌린 것들 반납하는 것이다.
'c언어 > 워딩(미정리)' 카테고리의 다른 글
문자열과 배열 복습 (0) | 2019.07.08 |
---|---|
별찍기 (0) | 2019.07.08 |
중첩되는 반복문 (0) | 2019.07.08 |
do while문, for문 (0) | 2019.07.08 |
반복문, while문 (0) | 2019.07.08 |