C Programming Conditional Operator

Last modified by Microchip on 2024/01/15 21:58

The conditional operator is a shorthand notation for an if/else construct. It's one of those elements of C that people either really love or really hate. But, it is used by enough programmers that you should be familiar with it even if you don't use it in your own code.

One useful application of the conditional operator is to conditionally assign a value to a variable.

Syntax

(test-expr) ? do-if-true : do-if-false;

Example 1 (most commonly used)

1
x = (condition) ? a : b;

The first method requires less typing, and is therefore used more frequently.

Example 2 (less often used)

1
(condition) ? (x = a) : (x = b);

The problem with the second method is that if you forget the parentheses in the part after the '?' this will not compile.
This method actually requires one instruction less when compiled, so it is technically more efficient.

In both cases:

  • x = a if condition is true
  • x = b if condition is false

Example

1
2
3
4
5
int x = 5;

(x % 2 != 0) ?
       printf("%d is odd\n", x):
       printf("%d is even\n", x);

The code above would produce the following result:

5 is odd