본문 바로가기
C C++/C언어 기초

C언어 #11 - if, else if 조건 식의 모든 것

by Go! Jake 2022. 3. 20.

if, else if는 프로그램의 흐름을 조건에 따라 컨트롤, 제어할 수 있다는 점에서 반드시 필요한 내용입니다. if, else if에 대해 알아보도록 하겠습니다.

 

if문의 목적과 if문 사용하기

앞 서 for문과 while문을 통해 반복문을  배웠습니다. 두 반복문은 조건을 만족하는 경우 반복문을 실행하는 것이었는데요. 해당 조건에 따라만 동작하기 때문에 반복문의 '선택적 실행'을 할 수는 없습니다. 하더라도 중첩을 여러 번하여 불필요한 수식이 들어가게 됩니다.

 

이 때, if, else if는 조건에 따라 '선택적'으로 프로그램을 실행합니다. 필요한 부분만 실행할 수 있기 수월하기 때문에 유용하게 쓰입니다. 입력을 받은 아래 예시에서 살펴보도록 하겠습니다. 아래 예시는 입력된 값을 양수, 0, 음수 중 판독하는 예시입니다.

#include <stdio.h>
#pragma warning(disable:4996)


int main(void)
{
	int num;
	printf("정수 입력\n");
	scanf("%d", &num);

	if (num < 0)
		printf("값이 음수입니다.");
	if (num == 0)
		printf("값이 0입니다.");
	if (num > 0)
		printf("값이 양수입니다.");
	return 0;
}

보면 int 선언된 num 값을 입력받고 이를 양수, 0, 음수로 판독하는 것을 알 수 있습니다. if () 내의 조건을 보고 아래 영역을 실행하는 것입니다. if문이 3개가 있었지만 하나의 조건만 만족하여 하나만 실행되었음을 알 수 있습니다.

 

if, else문 사용하기

위 예시에서는 여러 if문이 있고 이 조건에 만족하면 조건에 해당하는 구문이 실행되는 것을 알 수 있었습니다. 여기서 if ~else문을 사용해 볼 필요가 있습니다. if ~else문에 대한 목적은 if조건이 '아니라면 모든 경우에 대해' 묶어서 실행하는 것입니다.

 

아래 예시를 살펴 보도록 하겠습니다.

#include <stdio.h>
#pragma warning(disable:4996)


int main(void)
{
	int num;
	printf("정수 입력\n");
	scanf("%d", &num);

	if (num < 0)
		printf("값이 음수입니다.");
	else
		printf("값이 0 또는 양수입니다.");

	return 0;
}

else 처리 시 '음수인 경우가 아닌 모든 경우'에 속하므로 0 또는 양수라는 출력으로 묶었습니다. 이렇듯 if문 조건이 아닌 모든 경우에 대해 한번에 처리할 수 있습니다.

if, else if, else문 사용하기

else if는 앞 if 조건문이 만족하지 않을 때 사용한다. 예를 들어 if(조건1)...else if(조건2)...else로 구성한 경우, else if(조건2)의 역할은, 조건1이 만족하지 않은 나머지 중 '조건2를 만족하는 경우'를 잡아낼 수 있다. 마음껏 추가할 수 있다. 참고로, 조건2가 만족하는 경우 else는 건너뛴다.

#include <stdio.h>
#pragma warning(disable:4996)


int main(void)
{
	int num;
	printf("정수 입력\n");
	scanf("%d", &num);

	if (num < 0)
		printf("값이 음수입니다.");
	else if (num == 0)
		printf("값이 0입니다.");
	else
		printf("값이 양수입니다.");
	return 0;
}

else if (num == 0)인 경우로 사용하였습니다. if에 연결하여 사용할 수 있고 조건을 특정화하여 사용할 수 있는 장점이 있습니다.

 

삼항 연산자 사용하기

if~else문을 일부 삼항 연사자로 쉽게 표현할 수 있다.

구조는 값 = (조건1) ? 출력1 : 출력2

 

특히 값을 지정할 때의 예시는 아래와 같다. 아래 예시는 양수일 때 양수의 의미로 1을 출력하고, 이 외에는 0을 출력하는 구문이다.

#include <stdio.h>
#pragma warning(disable:4996)


int main(void)
{
	int num;
	int ans;
	printf("정수 입력\n");
	scanf("%d", &num);

	ans = (num > 0) ? 1 : 0;
	printf("%d", ans);
	
	return 0;
}

ans = (num > 0) ? 1: 0; 구조를 통해 num 정수가 0보다 큰 경우 1, 이 외 경우 0으로 출력되도록 하였습니다.

댓글