앞으로 배울 내용은 제어문의 세트입니다. 그중 처음엔 분기문인 if문을 다루고, 두번째는 반복문인 while, for문을 다룹니다. 이렇게 제어문으로 넘어가는 단계부터, 지난 시간에 언급했듯이 논리구조가 들어가기에 기존의 단순연산의 코드에서 제대로 된 프로그램의 틀이 나오게 됩니다. 처음에 배울 분기문은 조건에 따라 분기가 갈리기 때문에, 전에 배운 3항 연산자, 조건연산자를 떠올리며 배우면 좋을 듯합니다.
분기문이란 무엇인가요?
만약 이렇다면 이것을 하고, 아니면 다른 것을 하거나 아무것도 없는 등의 구조를 한번에 담아낸 것입니다.
이 분기문은 if, else if, else, goto, switch case문으로 나뉘는데요. 우선 기초라 할 수 있는 if문을 알아봅시다.
if문의 형식은 if()로 괄호 안에 조건식이 들어가게 됩니다. 이 조건식이 결과가 참이(0이 아닌 수가) 될 경우 아래의 실행문이 실행됩니다다. 조건식이 거짓이 나올 경우 if의 실행문을 넘기고 프로그램이 실행됩니다.
여기서 if(조건식) 아래에 붙을 실행문이 1개일 경우는 괜찮지만, 실행문이 여러 개일 경우에는 꼭 스코프 { }를 실행문 시작과 끝에 붙여주어야 됩니다. 그리고 if문 조건문을 마치고 나서는 세미클론 ; 를 절대로 붙이면 안 됩니다. (실행문은 tab키로 들여쓰기 해주는 것은 센스)
if문을 정리하자면, 조건식에 만족했을 경우에만 if의 실행문을 추가로 실행하고 아님 마는 제어문이라는 것이라 정리해서 이해하면 됩니다. 추가로 스코프가 열린 경우에는 if문 안에도 변수선언을 할 수 있다. (c언어에서 변수선언은 스코프 { }가 열린 직후에 바로 할 수 있다는 규칙이 있습니다. 틈새로 알아둡시다.)
if문을 작성하면서도 위에 언급했지만 흔히 초보가 하는 실수가 있습니다.
특히 if(a == b)을 if(a = b)로 작성하는 것입니다. 이것은 누누이 말했지만 ==는 관계연산자(등치)로 쓰이고 =는 대입 연산자로 쓰입니다.
그리고 절대로 if()에 세미클론 ;을 붙이지 말라고 했는데 그이유가 붙일 경우에는 if(조건문)으로 조건문이 참이 될 경우 실행되는 실행문이 " ;"이 됩니다. 빈 실행문이 되고, 뒤에 스코프{ }를 붙여도 스코프는 if문과 연관없이 그냥 열린게 돼서 if문이 어떻든 간에 스코프 안의 실행문이 돌아가기에 문제가 생기는 것입니다.
(참고: 스코프는 아무이유 없이 열려도 문법에는 문제가 되지 않는다. 대신에 쓰는 것은 바람직하지 않으니 될 수 있으면 쓰지 말자)
그리고 if(!a)라고 하는 경우에는 !이 not비트연산으로 참을 거짓으로, 거짓을 참으로 바꾸기에 0을 입력받아도 if실행문이 실행됩니다. if(1)같은 경우는 실행문이 실행될 수밖에 없는 제어문으로, 제어문을 붙일 이유가 없습니다.
어떤가요? if문, 조건연산자와 많이 닮았지 않은가요? 처음에는 if문이 낯설지만 앞으로 자주볼 제어문입니다. 집중합시다.
'c언어' 카테고리의 다른 글
다양한 연산자 (0) | 2019.07.02 |
---|---|
산술연산자 응용 (0) | 2019.07.02 |
C언어 형식문자, 심화 (4) | 2019.07.02 |
비트, 논리, 비교연산 예제 (0) | 2019.06.30 |
비트, 비교, 논리 연산자 (0) | 2019.06.30 |