코딩을 효율적으로 하기 위해서는 숏코딩, 즉 문장을 간결하게 써야합니다.
이는 컴퓨터의 메모리는 둘째치고,
사람이 소스코드를 확인하는데에 있어서 직관적으로 해석할 수 있어야 하기 때문입니다.
아주 쉬운 예로 절댓값, 최댓값, 최솟값 이 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); 최대값
'Language > C, C++' 카테고리의 다른 글
[C++] C4996 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getch. See online help for details. (0) | 2021.06.04 |
---|---|
[C] E0144 "const char *" 형식의 값을 사용하여 "char" 형식의 엔터티를 초기화할 수 없습니다 (0) | 2021.05.23 |
[C] 비트 시프트 연산의 원리 (0) | 2021.05.22 |
[C] 지역변수와 전역변수 : 전역변수의 적절한 사용 시기 (0) | 2021.05.21 |
[C] C4700 초기화되지 않은 ~ 지역 변수를 사용했습니다. (0) | 2021.05.20 |