지난시간에 배운 관계연산자와 논리연산자를 활용할 수 있는 조건연산자에 대해알아보도록 하겠습니다. "?:"라는 표현하여 조건문을 만드는 연산자입니다. 이제 이 연산자에 대해 알아보도록 하죠.
조건식 ? 참문장 : 거짓문장
이렇게 조건식이 참일때 참문장이 수행되고 거짓일 때 거짓문장이 수행됩니다. 어렵지 않죠. ?앞이 조건식을 나타내고 콜론(:)을 기준으로 앞음 참일때 수행하고 뒤는 거짓일 때 수행 된다는 것만 기억 하시면 됩니다.
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;
}
[결과]
조건식 ? 참문장 : 거짓문장;
위 식에서 실험은 참문장 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이 됩니다. 그럼 실행해서 결과를 확인해 봅시다.
[결과]
오늘은 조건연산자에 대해서 살펴보았습니다. 사실 이 연산자를 잘 쓰지 않는 연산자입니다. 나중에 배우게 될 IF문으로 많이 유사한 동작을 수행할 때 사용되기 때문에 왠만하면 IF문을 쓰지 조건연산자를 쓰지 않습니다. 하지만 전혀 안쓰지는 않습니다. 약식 코딩으로 빠르게 상황을 만들고 결과를 도출할 때 코딩을 짧게 할 수 기 있 때문입니다. 즉, 어떤 조건을 두고 그 조건에 따라 특정 값을 반환하고 싶을 때 한줄로 코딩 할 것을 IF문으로 하면 2줄 이상이 나와야 합니다. 그렇기 때문에 뭔가 간략하게 코딩할 때는 조건연산을 쓰면 괜찮습니다. 하지만 잘 안쓰는 거라서 추전드리지는 않습니다. 그냥 이런 연산자가 있다는 정도로 하고 넘어가셔도 됩니다.