Условная операция (?:) единственная трехчленная (тернарная) операция в C++, имеющая три операнда. Ее синтаксис:
условие ? выражение_1 : выражение_2
Первый операнд является условием, второй операнд содержит значение условного выражения в случае, если условие истинно (возвращает ненулевое значение), а третий операнд равен значению условного выражения, если условие ложно (возвращает нуль). Например, оператор:
Label1->Caption = grade > 3 ? "Вы хорошо знаете материал" : "Плохо";
в зависимости от значения переменной grade выдаст текст «Вы хорошо знаете материал» при значении grade, превышающем 3, и текст «Плохо» при меньшем значении grade.
Оператор с условной операцией выполняет фактически те же функции, что и оператор if...else. Но в ряде случаев применение условной операции компактнее и нагляднее оператора if...else. К тому же иногда условная операция может использоваться в таких ситуациях, когда применение оператора if...else синтаксически невозможно.
В условной операции условие может быть любым скалярным выражением. Условные выражения могут быть практически любого типа (арифметические, указатели, структуры, объединения), но типы двух выражений в операции должны быть согласованными. В качестве условных выражений могут также фигурировать какие-то исполняемые действия.