본문 바로가기
PROGRAMMING/C

C언어 if 문

by 쪼렙엔지니어 2022. 9. 15.
반응형

자 오늘은 본격적인 C언어의 문법을 시작해 보겠습니다. 바로 if문 입니다. if문은 개발에 관심이 없으신 분들도 많이 들어보셨을 정도로 유명합니다. if 어쩌고 저쩌고 블라블라블라..... 영화나 드라마에도 많이 나오죠. 그만큼 기초적이고 가장 많이 사용하는 기본 문법입니다. 전혀 어렵지 않으니 하나씩 차근차근 알아보도록 하겠습니다.

1. if문

if는 영어로 우리말 뜻풀이를 해보자면 만약에... 정도가 됩니다. 즉 "만약에 X라면 Y를 해라." 이러한 프로그램이 if문인거죠. 쉽죠? 물론 중복으로 사용하고 예외사항 처리등의 내용이 더 있지만 기본적인 골격은 "만약에 X라면 Y를 해야."에서 크게 벗어나지 않습니다. 그럼 바로 예제를 하나 볼까요?

정말정말 간단한 예제입니다. 

위 부분은 정수타입의 변수 i를 선언하고 printf함수를 사용하여 "올해는 몇년도일까요?"라는 문장을 출력한 뒤 scanf_s함수를 사용하여 숫자데이터를 입력받아 변수 i에 대입하는 부분으로 간단한 부분이니 넘어가도록 하겠습니다.

그 뒤에 

이 부분이 if문의 핵심이 되는 부분이지요. 일단 먼저 설명하자면 i의 값이 2022와 같다면 { }안의 프로그램을 실행하여라 입니다. 즉 위에서 scanf_s함수 부분에서 우리가 2022를 입력한다면 최종적으로 "맞습니다. 올해는 2022년도 입니다."라는 문장이 출력되는 것이지요. 그럼 직접 실행해 볼까요?

최초 실행하면 위와 같은 문장이 출력됩니다. 여기서 2022를 입력해 보겠습니다.

2022를 입력했더니 if문 { }안의 프로그램이 실행되었습니다. 그래서 "맞습니다. 올해는 2022년도 입니다."라는 문장이 실행되었네요. 그렇다면 만약에 2022말고 다른 숫자를 입력해보면 어떻게 될까요? 직접 해 보겠습니다.

2023을 입력했더니 아무일도 일어나지 않고 프로그램이 종료되었습니다. 즉 if문에서 가정한 상황(조건)이 참이라면 중괄호속 함수가 실행되고 그렇지 않으면 실행하지 않고 지나치는 것입니다.

참고로 ==과 같이 어떠한 두값 사이의 관계를 나타내주는 연산자를 관계연산자라고 부릅니다. I는 좌변, 2022는 우변입니다. 관계연산자는 어떠한 관계를 연산 한 후에 참이면 1, 거짓이면 0을 나타냅니다. 다시말해 정확하게 얘기하자면 if문은 괄호속 조건이 1(참)인가 0(거짓)인가를 체크하고 1이면 중괄호속의 내용이 실행되고 0이면 중괄호속의 내용이 실행되지 않습니다.

2. 반복 if문

그럼 if문을 여러개 붙여서 반복하여 사용할 순 없을까요? 예를 들어 위의 프로그램에서 2022년이 입력되면 A라는 문장이 출력되고, 2023년이 입력되면 B라는 문장이 출력되고, 2021년이 입력되면 C라는 문장이 출력되도록이요. 물론 가능합니다. 바로 예제를 통해서 알아보도록 하겠습니다.

위 프로그램을 보면 기존 if문이 종결된 뒤에 새로운 if문을 붙이고 그 if문이 종결된 뒤에 또다른 if문을 붙였습니다. 그렇게 if문이 3개가 붙어 있네요. 그렇다면 2023이나 2021이 입력되면 실행결과는 어떻게 될까요? 바로 한번 알아보도록 하겠습니다.

정확하게 해당조건에 맞는 내용만 출력되는 것을 알 수 있습니다. 이렇듯 if문은 반복하여 사용이 가능합니다.

 

그럼 if문의 괄호속 조건이 0(거짓)일때도 무언가가 실행되게 만들 순 없을까요? 먼저 아래 예제를 한번 보겠습니다.

위 코드와 이전 코드와의 차이를 먼저 확인해 보겠습니다. 네 맞습니다. if문을 빠져나온 다음에 새로운 if문을 사용하지 않고 바로 printf함수를 하나 더 추가하였습니다.

바로 위 코드인데요. 그럼 위 코드가 추가되었을 때 아까와 같이 2023을 입력하게 되면 결과가 어떻게 나올까요? 바로 한번 확인해 보겠습니다.

오호... 아까 제일 처음 프로그램에서는 출력되지 않았던 "입력하신 년도는 2023년도 입니다."라는 문구가 출력되었습니다. 이것은 IF문 에서 조건이 거짓이기 때문에 (참이 아니라는 의미) if문의 중괄호 속 내용이 실행되지 않고 건너띄어지고 if문이 종결되었으며 그 뒤에 있는 "printf("입력하신 년도는 %d년도 입니다.\n", i);" 프로그램이 실행되고 전체 프로그램이 종료된 것입니다. 그렇지만 이것은 위에서 이야기 했던 완벽한 if문의 조건이 거짓일 때 도 어떤 프로그램이 실행되는 프로그램이라고 보기는 어렵습니다. 왜냐하면 위와 같이 코드를 작성하면 아래와 같은 상황도 있기 때문입니다.

네 맞습니다. if문의 조건이 참이되는 경우에도 if문이 종결된 뒤에 오는 코드도 실행이 되는 것이죠. 그럼 정확하게 if문이 거짓인 경우에만 실행되는 프로그램은 없을까요? 그럴리가 없죠. 존재합니다. 바로 else 입니다. 이 내용에 대해서는 다음 포스팅에서 계속 이어가도록 하겠습니다. 오늘은 여기까지 입니다. 감사합니다.

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.

 

반응형

댓글