Conditional operator


The Conditional operator is supported in many programming languages. This term usually refers to ?: as in C, C++, C#, Python, and JavaScript. However, in Java, this term can also refer to && and ||.

&& and ||

In some programming languages, e.g. Java, the term conditional operator refers to short circuit boolean operators && and ||. The second expression is evaluated only when the first expression is not sufficient to determine the value of the whole expression.

Difference from bitwise operator

& and | are bitwise operators that occurs in many programming languages. The major difference is that bitwise operations operate on the individual bits of a binary numeral, whereas conditional operators operate on logical operations. Additionally, expressions before and after a bitwise operator will always be evaluated.

if
If expression 1 is true, expression 2 and 3 will NOT be checked.
if
This will check expression 2 and 3, even if 1 is already true.
Short circuit operators can reduce run-time by avoid calling later functions. They can also avoid Null Exception if expression 1 check whether an object is valid.

Usage in Java


class ConditionalDemo1

?

In most programming languages, ?: is called the conditional operator. It is a type of ternary operator, while ternary operator in most situation means specifically to ?:, because it is the only operator that takes three operands.

Regular usage of "?:"

?: is used in conditional expressions. Programmers can rewrite an if-then-else expression in a more concise way by using the conditional operator.

Syntax


condition ? expression 1 : expression 2
condition: An expression which is evaluated as a boolean value.
expression 1, expression 2: Expressions with values of any type.
If the condition is evaluated to true, the expression 1 will be evaluated. If the condition is evaluated to false, the expression 2 will be evaluated.
It should be read as: "If condition is true, assign the value of expression 1 to result. Otherwise, assign the value of expression 2 to result."

Association property

The conditional operator is right-associative, meaning that operations are grouped from right to left. For example, an expression of the form a ? b : c ? d : e is evaluated as a ? b :.

Examples by languages

Java

class ConditionalDemo2
In this example, because someCondition is true, this program prints "1" to the screen. Use the ?: operator instead of an if-then-else statement if it makes your code more readable; for example, when the expressions are compact and without side-effects.
C++

  1. include
int main
There are several rules that apply to the second and third operands in C++:

// condition ? first_expression : second_expression;
static double sinc
There are several rules that apply to the second and third operands in C#:

var age = 26;
var beverage = ? "Beer" : "Juice";
console.log; // "Beer"
Conditional operator of JavaScript is compatible with following browsers:
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari, Android webview, Chrome for Android, Edge Mobile, Firefox for Android, Opera for Android, Safari on IOS, Samsung Internet, Node.js.

Special usage in conditional chain

The ternary operator is right-associative, which means it can be "chained" in the following way, similar to an if... else if... else if... else chain.

Examples by languages

JavaScript

function example
// Equivalent to:
function example
C/C++

const double a =
expression1 ? a1
: expression2 ? a2
: expression3 ? a3
: /*otherwise*/ a4;
// Equivalent to:
double a;
if
a = a1;
else if
a = a2;
else if
a = a3;
else /*otherwise*/
a = a4;

Special usage in assignment expression

the conditional operator can yield a L-value in C/C++ which can be assigned another value, but the vast majority of programmers consider this extremely poor style, if only because the technique's obscurity.

C/C++


= frink;
//equivalent to:
if
bar = frink;
else
baz = frink;