# Conditional Exp (The GNU Awk User’s Guide)

Previous: Boolean Ops, Up: Truth Values and Conditions [Contents][Index]

#### 6.3.4 Conditional Expressions

A *conditional expression* is a special kind of expression that has three operands. It allows you to use one expression’s value to select one of two other expressions. The conditional expression in `awk`

is the same as in the C language, as shown here:

selector ? if-true-exp : if-false-exp

There are three subexpressions. The first, `selector`

, is always computed first. If it is “true” (not zero or not null), then `if-true-exp`

is computed next, and its value becomes the value of the whole expression. Otherwise, `if-false-exp`

is computed next, and its value becomes the value of the whole expression. For example, the following expression produces the absolute value of `x`

:

x >= 0 ? x : -x

Each time the conditional expression is computed, only one of `if-true-exp`

and `if-false-exp`

is used; the other is ignored. This is important when the expressions have side effects. For example, this conditional expression examines element `i`

of either array `a`

or array `b`

, and increments `i`

:

x == y ? a[i++] : b[i++]

This is guaranteed to increment `i`

exactly once, because each time only one of the two increment expressions is executed and the other is not. See section Arrays in awk, for more information about arrays.

As a minor `gawk`

extension, a statement that uses ‘`?:`

’ can be continued simply by putting a newline after either character. However, putting a newline in front of either character does not work without using backslash continuation (see section awk Statements Versus Lines). If `--posix`

is specified (see section Command-Line Options), this extension is disabled.

Previous: Boolean Ops, Up: Truth Values and Conditions [Contents][Index]