What is ternary operator (? X : Y) in C++?

C++Server Side ProgrammingProgramming

The conditional operator (? :) is a ternary operator (it takes three operands). The conditional operator works as follows −

  • The first operand is implicitly converted to bool. It is evaluated and all side effects are completed before continuing.
  • If the first operand evaluates to true (1), the second operand is evaluated.
  • If the first operand evaluates to false (0), the third operand is evaluated.
  • The result of the conditional operator is the result of whichever operand is evaluated — the second or the third. Only one of the last two operands is evaluated in a conditional expression. The evaluation of the conditional operator is very complex. The steps above were just a quick intro to it. Conditional expressions have right-to-left associativity. The first operand must be of integral or pointer type. 
  • The following rules apply to the second and third operands −
    • If both operands are of the same type, the result is of that type.
    • If both operands are of arithmetic or enumeration types, the usual arithmetic 
  • conversions (covered in Standard Conversions) are performed to convert them to a common type.
  • If both operands are of pointer types or if one is a pointer type and the other is a constant expression that evaluates to 0, pointer conversions are performed to convert them to a common type.
  • If both operands are of reference types, reference conversions are performed to convert them to a common type.
  • If both operands are of type void, the common type is type void.
  • If both operands are of the same user-defined type, the common type is that type.
  • If the operands have different types and at least one of the operands has user-defined type then the language rules are used to determine the common type. (See warning below.)

example

#include <iostream>  
using namespace std;  
int main() {  
   int i = 1, j = 2;  
   cout << ( i > j ? i : j ) << " is greater." << endl;  
}

Output

This will give the output −

2 is greater.
raja
Published on 15-Feb-2018 10:11:12
Advertisements