본문 바로가기

C++ 일기

6 - 6. 삼항연산자

삼항연산자란, =, ?, : 세가지 연산자를 기준으로 총 3개의 항이 존재하는 연산을 담당하는 연산자로,

? 연산자 앞의 값이 참인지 거짓인지 확인하고,

참일 경우엔 : 연산자의 좌항의 값을, 거짓일 경우엔 : 연산자의 우항의 값을 반환하는 연산자이다.

#include<iostream>

int main()
{
   int num1 = 2;
   int num2 = 3;
   int res1;
   int res2;
   
   res1 = (num1 > num2) ? num1 : num2;
   std::cout << res;	// num2의 값인 3 반환
   
   res2 = (num1 <= num2) ? num1 : num2;
   std::cout << res;	// num1의 값인 2 반환
}

위의 식에서, res1의 (num1 > num2)의 값이 거짓이므로 : 연산자의 우항에 있는 num2의 값을 반환하게되고,

res2의 (num1 <= num2)의 값이 참이므로 : 연산자 좌항에 있는 num1의 값을 반환하게 되어

각각 3, 2가 출력된다.

이는 후에 다룰 조건문 if와도 관련있다.

#include<iostream>

int main()
{
   int num1 = 2;
   int num2 = 3;
   int res1;
   
   res1 = (num1 > num2) ? num1 : num2;	// res1의 값은 num2
   
   if(num1 > num2)
    res1 = num1;
   else
    res1 = num2;			// res1의 값은 num2
   
}

if else 구문은 후에 설명하겠지만 간단히 설명하자면, if의 괄호 안의 식이 참이면 아래의 식을,

그렇지 않은 경우라면 else 아래의 식을 실행하는 문법이다.

 

위처럼 간단한 조건과 분기, 그리고 실행문을 가지고있는 if else문이라면,

삼항연산자를 사용하여 코드를 가독성있게 작성할 수 있다.

그러나 위와 같은 간단한 if else문이 아닌, 복잡한 if else문을 삼항연산자로 만들면

오히려 가독성이 떨어지는 삼항연산자가 될 수 있으니 유의하여야 한다.

'C++ 일기' 카테고리의 다른 글

8. switch문  (0) 2024.02.21
7. 조건문 if  (0) 2024.02.21
6 - 4. 비교연산자 ( <, >, <=, >=, !=, ==)  (0) 2024.02.20
6 - 5. 논리연산자 ( &&, ||, !)  (0) 2024.02.20
6 - 3. 복합대입연산자(+=, -=, *=, /=, %=)  (0) 2024.02.20