3항 연산자로 세 개의 정수 크기 비교하기

Kiwoong Park·2023년 3월 21일
0

ternary 연산자

ternary, 3항 연산자는 자주 사용되지는 않지만, 복잡한 계산식이나 조건 처리, 비교 구조를 매우 간단히 표현할 수 있게 해준다.

3개의 요소로 이루어지는 3항(ternary) 연산자의 형태:
조건식 ? (참일 때의 값) : (거짓일 때의 값)
조건식의 계산 결과가 참인 경우에는
':' 왼쪽의 값 또는 식으로 바뀌고,
거짓인 경우에는 ':' 오른쪽의 값 또는 식으로 바뀐다.

예를 들어,
123 > 456 ? 0 : 1
과 같은 표현식은 123 > 456 의 비교연산 결과가 거짓이므로 1이 된다.

#include <stdio.h>
int main()
{
	int a, b;
    scanf("%d %d",&a, &b);
    printf("%d", a>b ? a:b);` //두 값 중 큰 값이 출력된다.
    return 0;
}

정수 3개 중 가장 작은 값

3항 연산자를 활용해 3개의 정수 중 가장 작은 값을 출력하는 코드를 짠다면 아래와 같이 코딩할 수 있다.

#include <stdio.h>
int main()
{
    int a, b, c;
    scanf("%d%d%c", &a, &b, &c); //3개의 정수가 공백으로 구분되어 입력된다.
    printf("%d\n", a<b ? (a<c?a:c) : (b<c?b:c) ); 
    /*
    1. a<b ? ➡ a 와 b의 크기를 비교하여, a 가 작으면 2번으로 가고, b 가 작으면 3번으로 감
    2. (a<c?a:c) ➡ a 와 c 중 작은 값을 비교해 출력하거나 
    3. (b<c?b:c) ➡ b 와 c 중 작은 값을 비교해 출력함.
    */
    return 0;
}

아래와 같이 짤 수도 있다.

#include <stdio.h>
int main()
{
    int a, b, c;
    scanf("%d %d %d",&a, &b, &c);
    printf("%d",(a<b?a:b)<c?(a<b?a:b):c);
    /*
    1. (a<b?a:b)<c? ➡ a와 b 중 작은 값을 c 와 비교해서
    2. (a<b?a:b):c ➡ 다시 a와 b 중 작은 값을 출력하거나, c를 출력함
    */
    return 0;
}
profile
You matter, never give up

0개의 댓글