Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 조건부 삼항 연산자( ?:)


조건 연산자(? :)는 삼항 연산자입니다(세 개의 피연산자가 필요함). 조건 연산자는 다음과 같이 작동합니다 -

  • 첫 번째 피연산자는 암시적으로 bool로 변환됩니다. 계속하기 전에 평가되고 모든 부작용이 완료됩니다.
  • 첫 번째 피연산자가 true(1)로 평가되면 두 번째 피연산자가 평가됩니다.
  • 첫 번째 피연산자가 false(0)로 평가되면 세 번째 피연산자가 평가됩니다.

조건 연산자의 결과는 두 번째 또는 세 번째 피연산자가 평가되는 결과입니다. 마지막 두 피연산자 중 하나만 조건식에서 평가됩니다. 조건 연산자의 평가는 매우 복잡합니다. 위의 단계는 간단한 소개였습니다. 조건식에는 오른쪽에서 왼쪽으로의 연관성이 있습니다. 첫 번째 피연산자는 정수 또는 포인터 유형이어야 합니다. 다음 규칙은 두 번째 및 세 번째 피연산자에 적용됩니다. -

  • 두 피연산자의 유형이 같은 경우 결과는 해당 유형입니다.
  • 두 피연산자가 모두 산술 또는 열거 유형인 경우 일반적인 산술 변환(표준 변환에서 다룸)을 수행하여 공통 유형으로 변환합니다.
  • 두 피연산자가 모두 포인터 유형이거나 하나가 포인터 유형이고 다른 하나가 0으로 평가되는 상수 표현식인 경우 포인터 변환을 수행하여 공통 유형으로 변환합니다.
  • 두 피연산자가 모두 참조 유형이면 참조 변환을 수행하여 공통 유형으로 변환합니다.
  • 두 피연산자의 유형이 모두 void인 경우 공통 유형은 void 유형입니다.
  • 두 피연산자가 동일한 사용자 정의 유형인 경우 공통 유형은 해당 유형입니다.
  • 피연산자 유형이 서로 다르고 피연산자 중 하나 이상에 사용자 정의 유형이 있는 경우 언어 규칙을 사용하여 공통 유형을 결정합니다. (아래 경고 참조)

예시

#include <iostream>  
using namespace std;  

int main() {  
   int i = 1, j = 2;  
   cout << ( i > j ? i : j ) << " is greater." << endl;  
}

출력

이것은 출력을 제공합니다 -

2 is greater.