[C] 절댓값, 최댓값, 최솟값을 출력하는 다양한 방법 : 숏코딩(Short Coding)
Language/C, C++

[C] 절댓값, 최댓값, 최솟값을 출력하는 다양한 방법 : 숏코딩(Short Coding)

 코딩을 효율적으로 하기 위해서는 숏코딩, 즉 문장을 간결하게 써야합니다.

 

 이는 컴퓨터의 메모리는 둘째치고,

사람이 소스코드를 확인하는데에 있어서 직관적으로 해석할 수 있어야 하기 때문입니다.

 

 아주 쉬운 예로 절댓값, 최댓값, 최솟값 이 3가지를 출력하는 코딩 방법 또한 어떻게 구성하느냐에 따라

보기 어렵게 만들 수도 있고, 보기 쉽게 만들 수 도 있습니다.

 

 

 

조건 연산자 : 피연산자가 3개인 삼항 연산자

 문장을 간단하게 만들어주는 대표적인 예로는 조건 연산자가 있습니다.

 

 조건 연산자는 if else 문을 일부 대체할 수 있고, 이를 통해 알 수 있듯이

조건 연산자가 자주 사용되는 이유는 코드를 짧고 간결하게 만들어주기 때문이죠.

 

 조건 연산자의 구성은 아래와 같습니다.

조건 ? TRUE : FALSE;

 

 이해를 돕기 위해 아래 예제를 살펴보겠습니다.

#include <stdio.h>

int main(void)
{
	int x = -10, y = 20;

	int absoluteX = (x > 0) ? x : -x;

	int max = (x > y) ? x : y;
	int min = (x < y) ? x : y;

	printf("x 의 절댓값 : %d\n", absoluteX);
	printf("x 와 y 중에 최댓값 : %d\n", max);
	printf("x 와 y 중에 최솟값 : %d\n", min);

	return 0;
}

 조건 연산자인 삼항 연산자 ?: 를 사용하여 절댓값, 최댓값, 최솟값 3가지를 출력하는 코딩입니다.

 

 위 코드에서 절댓값을 예로 들자면 아래와 같이 해석할 수 있습니다.

x 가 0보다 크면 ? x 값을 반환 : 아니라면 -x 값을 반환;

 

예제 )

x 값에 -10 가 들어가면 0 보다 작기 때문에 x = -(-10)
x 값에 10 이 들어가면 0 보다 크기 때문에 x = 10

∴ 어떤 수를 대입하더라도 항상 절댓값 출력이 가능한 것을 알 수 있습니다.

 


 

math.h / algorithm 수학함수

 더 간단한 방법들 또한 존재합니다.

 

 아래 코딩은 math.h 혹은 algorithm 헤더파일을 소스코드에 추가해서 수학함수를 사용하는 방법입니다.

#include <stdio.h>
#include <math.h>

int main(void)
{
	int x = -10;
	printf("%d\n", abs(x));

	double a = 20.;
	double b = 5.;
	printf("%lf\n", fmax(a, b));
	printf("%lf", fmin(a, b));

	return 0;
}

※ abs : absolute 의 약자. 절댓값을 출력하는 수학함수를 뜻함

 

 이처럼 굳이 조건식을 직접 작성하지 않아도 C언어에서 지원하는 함수를 통해

삼항 연산자보다 더 간단하게 코딩할 수도 있습니다.

 

 

 

 최댓값을 출력하는 fmax 와, 최솟값을 출력하는 fmin 수학함수는

double 뿐만 아니라 float 및 long double 에 대한 변형도 제공합니다.

 

▼ 사용 예)

// double fmax(double x, double y); 최대값

// float fmaxf(float x, float y); 최대값

// long double fmaxl(long double x, long double y); 최대값