[C언어-막코딩] 10장 조건연산자(삼항연산자)

Words
261
Reading
2 min
8y
Listen to this post
~2 min

[C언어-막코딩] 10장 조건연산자(삼항연산자)



지난시간에 배운 관계연산자와 논리연산자를 활용할 수 있는 조건연산자에 대해알아보도록 하겠습니다. "?:"라는 표현하여 조건문을 만드는 연산자입니다. 이제 이 연산자에 대해 알아보도록 하죠.

1. 조건 연산자

조건식 ? 참문장 : 거짓문장

이렇게 조건식이 참일때 참문장이 수행되고 거짓일 때 거짓문장이 수행됩니다. 어렵지 않죠. ?앞이 조건식을 나타내고 콜론(:)을 기준으로 앞음 참일때 수행하고 뒤는 거짓일 때 수행 된다는 것만 기억 하시면 됩니다.

2. 조건연산자 사용


a=3, b=5일때

(a>b) ? 참문장 : 거짓문장

어떻게 동작할까요. 3은5보다 작기 때문에 조건식은 거짓이 됩니다. 고로 거짓문장이 수행됩니다.
.
직접 코딩해서 실행 해 볼까요

[소스]

#include 

int main(int argc, char *argv[]) {
    int a, b;
    
    a=3;
    b=5;
    printf("a=%d , b=%d \n",a,b);
    (a>b)?printf("a>b => 참\n"):printf("a>b => 거짓\n");
    (a<b)?printf("a 참\n"):printf("a 거짓\n");

    return 0;
}

[결과]
s1.jpg

또 다른 표현


조건식 ? 참문장 : 거짓문장;

위 식에서 실험은 참문장 or 거짓문장으로 끝나지만 실제는 각 참문장과 거짓문 자체가 반환되어 대입됩니다.

Val = (a>b) ? 10 : 0;

이렇게 a가 b보다 클 때 참문장 10이 되고 이 값은 왼쪽으로 대입되어 Val=10이 됩니다.

코딩으로 살펴봅시다.

[소스]

#include 

int main(int argc, char *argv[]) {
    int a, b, Val;
    
    a=5;
    b=3;
    
    Val = (a>b) ? 10 : 0;
    
    printf("a=%d , b=%d, a>b이면 Val = %d \n",a,b,Val);
        
    return 0;
}

a가 b보다 크기 때문에 참으로 Val=10이 됩니다. 그럼 실행해서 결과를 확인해 봅시다.

[결과]
s2.jpg

마무리


오늘은 조건연산자에 대해서 살펴보았습니다. 사실 이 연산자를 잘 쓰지 않는 연산자입니다. 나중에 배우게 될 IF문으로 많이 유사한 동작을 수행할 때 사용되기 때문에 왠만하면 IF문을 쓰지 조건연산자를 쓰지 않습니다. 하지만 전혀 안쓰지는 않습니다. 약식 코딩으로 빠르게 상황을 만들고 결과를 도출할 때 코딩을 짧게 할 수 기 있 때문입니다. 즉, 어떤 조건을 두고 그 조건에 따라 특정 값을 반환하고 싶을 때 한줄로 코딩 할 것을 IF문으로 하면 2줄 이상이 나와야 합니다. 그렇기 때문에 뭔가 간략하게 코딩할 때는 조건연산을 쓰면 괜찮습니다. 하지만 잘 안쓰는 거라서 추전드리지는 않습니다. 그냥 이런 연산자가 있다는 정도로 하고 넘어가셔도 됩니다.


Sponsored ( Powered by dclick )

dclick-imagead