본문 바로가기
Computer Language/C Language

분기 조건문 if, if else, 삼 항 연산자 정리 및 실습 (C언어)

by 방구석 임베디드 2022. 7. 2.
반응형

안녕하세요.

오늘은 C언어 조건문을 정리하는 시간을 가지도록 하겠습니다.

조금더 정확하게 이야기하면

분기문 if, if else, 삼 항 연산자에 대해서 알아 보도록 하겠습니다.

 

그전에 분기에 대해서 알 필요가 있습니다.

분기란 무엇을 의미하는 것일까요?

분기란 나뉘어 갈라지는 것을 의미합니다.

 

아래 코드가 있습니다.

두수를 입력받아서 덧셈, 뺄셈, 곱셈, 나눗셈 연산을 수행하는 코드입니다.

그런데, 분기를 하지 못하면

우리는 덧셈만 필요한데도 뺄셈, 곱셈, 나눗셈 연산을 모두 수행해야 합니다.

하지만 분기가 가능하면 선택동작이 가능하게 됩니다.

그렇다면 대표적으로 분기를 수행하기 위한 구문이 무엇이 존재할까요?

지금부터 알아 보도록 하겠습니다.

1. if구문을 이용한 분기

아래 if 구문을 살펴 보도록 하겠습니다.

if(조건) 에서 조건이 참이면 아래 중괄호 부분이 실행이 됩니다.

중괄호 부분에 코드가 한줄이면 중괄호 생략도 가능합니다.

그렇다면 예제 코드를 한번 동작 시켜 보도록 하겠습니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

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

	if (num < 0)
		printf("입력 값은 0보다 작다 \n");

	if (num > 0)
		printf("입력 값은 0보다 크다 \n");

	if (num == 0)
		printf("입력 값은 0이다 \n");
	return 0;
}

위에서 조건에 맞는 구문만 수행하고 나머지는 수행하지 않는 것을 확인 할 수 있습니다.

만일 3을 입력하면 아래와 같이 색칠된 부분만 코드가 실행된다고 생각하시면 됩니다.

그렇다면 if 구문을 이용하여 계산기 프로그램을 만들 수 있습니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int opt;
	double num1, num2;
	double result;

	printf("1 덧셈, 2 뺄셈, 3 곱셈, 4 나눗셈 \n");
	printf("선택? ");
	scanf("%d", &opt);
	printf("두개의 실수 입력: ");
	scanf("%lf %lf", &num1, &num2);

	if (opt == 1)
		result = num1 + num2;

	if (opt == 2)
		result = num1 - num2;

	if (opt == 3)
		result = num1 * num2;

	if (opt == 4)
		result = num1 / num2;

	printf("결과 : %f \n", result);

	return 0;
}

하지만 위의 코드를 분석해 보면, 계속 조건문 if를 검사하고 있습니다.

따라서 이렇게 반복적으로 조건을 계산할 필요는 없습니다.

 

그렇기 때문에 우리는 if~else 구문을 이용하여 이 부분의 문제를 해결 할 수 있습니다.

2. if~else 구문에 대해서 알아 보도록 하자!

먼저 예시를 하나 보도록 하겠습니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int opt;
	double num1, num2;
	double result;

	printf("1 덧셈, 2 뺄셈, 3 곱셈, 4 나눗셈 \n");
	printf("선택? ");
	scanf("%d", &opt);
	printf("두개의 실수 입력: ");
	scanf("%lf %lf", &num1, &num2);

	if (opt == 1)
	{ 
		result = num1 + num2;
	}
		
	else if (opt == 2)
	{
		result = num1 - num2;
	}	
	else if (opt == 3)
	{
		result = num1 * num2;
	}
	else if (opt == 4)
	{
		result = num1 / num2;
	}
	else
	{
		/*No Code*/
	}
	printf("결과 : %f \n", result);

	return 0;
}

결국 아래와 같이 조건이 맞게 되면 바로 if else 구문을 빠져 나가는 것을 볼 수 있습니다.

하지만 결국 if else 구문을 컴파일 하면

아래와 동일합니다.

컴파일러는 아래 두 구문을 동일한 결과로 만듭니다.

마지막으로 삼항연산자를 추가적으로 정리하고 마무리 하도록 하겠습니다.

삼항연산자는 은근히 코딩할때 많이 사용하는 기법입니다.

3. 삼 항 연산자에 대해서 알아 보도록 하자!

생각보다 아주 간단합니다.

아래 A 부분이 참이면 B를 반환하고

거짓이면 C를 반환합니다.

예제 코드를 한번 돌려보도록 하겠습니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

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

	abs = num > 0 ? num : num * (-1);
	printf("절대값: %d \n", abs);
	return 0;
}

abs = num > 0 ? num : num * (-1);

방금 -5 > 0 은 거짓입니다.

따라서 num*(-1) 이 abs로 들어간 것을 확인 할 수 있습니다.

 

이상으로 분기 조건문 if, if else, 삼 항 연산자 정리 및 실습을 마치도록 하겠습니다.

반응형

댓글