Условная операция – тернарная, т.к. в ней участвуют три операнда. Формат написания условной операции следующий:
Выражение1?выражение2:выражение3;
если выражение 1 (условие) отлично от нуля (истинно), то результатом операции является значение выражения 2, в противном случае – значение выражения 3. Каждый раз вычисляется только одно из выражений 2 или 3.
На рис. 6.3 приведена схема вычисления результата, которая аналогична схеме полного оператора if (см. рис. 6.2):

Условное вычисление применимо к арифметическим операндам и операндам-указателям.
Рассмотрим участок программы для нахождения максимального значения z из двух чисел a и b, используя оператор if и условную операцию.
1. Запишем оператор if :
if (a > b) z = a;
else z = b;
2. Используя условную операцию, получим
z = (a > b) ? a : b;
Условную операцию можно использовать так же, как и любое другое выражение. Если выражения 2 и 3 имеют разные типы, то тип результата определяется по правилам преобразования. Например, если f имеет тип double, а n – int, то результатом операции
(n > 0) ? f : n;
по правилам преобразования типов будет double, независимо от того, положительно n или нет.
Использование условных выражений позволяет во многих случаях значительно упростить программу. Например:
int a, x;
...
x = (a < 0) ? –a : a;
printf("\n Значение %d %s нулевое !", x, (x ? "не" : " ") );