In C++, ternary operator allows executing different code depending on the value of a condition, and the result of the expression is the result of the executed code. The ternary operator uses 3 operands. It evaluates a condition and after that chooses one of its two branches to execute, depending upon the result of condition. The symbol for ternary operator is “? :”. The syntax for the ternary operator is:

Expression1 ? Expression2 : Expression3

OR

(condition) ? (if_true) : (if_false)

In the above C++ syntax, Expression1 is condition (a Boolean expression, which can either be true or false) while Expression2 and Expression3 can either be variable or numeric value or any mathematical expression or statement. If the condition would be true, Expression2 will be executed else Expression3 will be executed.
? : ;

Ternary Operator Diagram

Ternary Operator Flow Diagram

Ternary operator can be considered as the replacement of if-else statements in C++. The other name for the ternary operator is conditional operator, that is perhaps more meaningful, as it evaluates the conditions just like if. Moreover, the ternary operator makes the code more concise without compromising readability.

Before getting to the examples of ternary operator, consider the following.

Rule for 1st operand:

All conditional expressions possess right-to-left associativity where the 1st operand of the expression must be of integer or pointer type.

Rules for 2nd and 3rd operands:

The following rules are applicable to 2nd and 3rd third operands:

  • If both 2nd and the 3rd operands are of same type, the result will also be of that type.
  • If 2nd and 3rd operands are of enumeration or arithmetic types, then the arithmetic conversions will be performed to transform them to a common type.
  • If 2nd and 3rd both operands are of pointer type or if anyone one of them is of pointer type and the other one is constant expression, evaluates to 0, then simply pointer conversions will be performed to convert both of them to a common type.
  • If 2nd and 3rd both operands are of reference types then of course reference conversions will be performed to convert both operands to a common type.
  • If 2nd and 3rd both operands are of type void, then the common type will be void.
  • If both operands have user-defined type, the common type is that type.
  • If both operands are of different types and out of them one has user-defined type, the language rules will be used to convert them to a common type.

Any combinations of 2nd and 3rd operands that are not mentioned in the above list are illegal.

Let’s consider some example to get hands-on knowledge of ternary operator.

How to find the largest number using if-else statements?

The following C++ code example demonstrates finding the largest number among two numbers using if-else statements.

Output:

Find the largest number using ternary operator in C++

The following C++ code example demonstrates finding the largest number among two numbers using ternary operator.

Output:

Here in above mentioned C++ example, you can see that the output of both codes is same, but the way they are written is different. The second code written by using ternary operator is more concise as compared to first one that is written using if-else statements.
max = (a > b) ? a : b;
The above mentioned C++ statement creates all the difference. The condition is (a > b), that means, if a will be greater than b, value of a will become equivalent to whole expression and assigned to variable max but if it is not the case, the value of a is not greater than b then the whole expression will become equivalent to value of b and its value will be assigned to variable max.

Now let’s try a bit complex example of ternary operator:

Find the largest number among three numbers using if-else statement

Output:

The above mentioned C++ example compared three numbers using if-else statements and then outputs the largest number.

Find the largest number among three numbers using nested Ternary Operator

Output:

In above C++ example, 3 numbers are compared using ternary operator.
max = (a > b) ? (a > c ? a : c) : (b > c ? b : c);
In this C++ statement, nested ternary operators are used. (a > b) compares the value of a and, if the value of a is greater than value of b, (a > c ? a : c) will be executed that further compares the value of a with the value of c, if the value of a is greater than the value of c, the whole expression will become equivalent to the value of a and assigned to max. But if the value of a is smaller than the value of c the whole expression will become equivalent to the value of a and assigned to max.

And if (a > b) becomes false, then (b > c ? b : c) will be executed that further compares the value of b with the value of c, if the value of b is greater than the value of c, the whole expression will become equivalent to the value of b and assigned to max. But if the value of b is smaller than the value of c the whole expression will become equivalent to the value of b and assigned to max.

Let’s consider another C++ example to make your concepts more clear.

Output:

I have already mentioned this example above, the purpose of mentioning it again is to make it clear that you can also print the results by directly writing the cout statements in place of 2nd and 3rd operands.

Ternary operator in C programming works in a similar way as explained in this article.

Hope, you find this article helpful. Kindly let me know about you feedback.  Have a good day and happy programming :)