[C언어] 조건연산자 ?:

ET의 공부/C언어|2020. 12. 17. 21:44

조건연산자(conditional expression)는 C언어에서 유일한 삼항 연산자(termary operator)입니다. 그럼 연산자의 종류부터 알아보겠습니다. 단항 연산자(unary operator)는 피연산자가 하나인 연산자입니다. 부호를 나타내는 +,- 증감을 나타내는 증감연산자인 ++,--가 그 종류입니다. 피연산자가 두 개인 연산자는 이항 연산자(binary operator)라 부르는데 대입(=), 비교(>=,==,<==), 산술(+,-,*,/) 등이 예입니다. 그럼 이제 삼항 연산자에 사용하는 조건 연산자에 대해 알아보겠습니다.

 

 

조건 연산자

앞서 언급했듯 조건연산자는 C언어에서 유일한 삼항 연산자 입니다. 조건 연산자의 형식은 다음과 같습니다.

expression1 ? expression2 : expression3;

 

 

expression1의 값이 참이면(0이 아니면), 전체 조건 표현식은 expression2와 같은 값을 갖고 반대로 expression1의 값이 거짓(0이면) expression3 와 같은 값을 지니게 됩니다.

 

조건 연산자의 표현식(?:)은 두 값중 하나의 값을 대입하려 할때 유용합니다.

 

min =  (a<b)?a:b.  ==> (3<5),  5가 3보다 큰것은 참이므로 min의 값은 3입니다.

max = (a>b)?a:b   ==> (3>5),  3이 5보다 큰것은 거짓이므로 max의 값은 5입니다. 

 

조건 연산자의 예제 코드

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main()
{
    int m = 5, n = 4;
    (m > n) ? printf(" %d > %d\n", m, n)
    : printf("%d > %d\n",n, m);
    
    return 0;
}

 

일반적으로, if else 문으로도 조건 연산자의 구현이 가능합니다. 이는 아래와 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main()
{
    int m = 5, n = 4;
    //조건 연산자
    (m > n) ? printf(" %d > %d\n", m, n)
    : printf("%d > %d\n",n, m);
    //if else
    if(m>n){
        printf(" %d > %d\n", m, n);
    }
    else{
        printf("%d > %d\n",n, m);
    }
    return 0;
}

 

이상으로 조건연산자에 대해 알아봤습니다. 감사합니다.

댓글()