Условное выражение
Условное выражение, или оператор выбора, предоставляет возможность более компактной записи текстов, включающих инструкцию if-else. Например, вместо:
bool is_equal; if (!strcmp(str1,str2)) is_equal = true; |
else is_equal = false;
можно употребить более компактную запись:
bool is_equa1 = !strcmp( strl, str2 ) ? true : false;
Условный оператор имеет следующий синтаксис:
expr11 ? expr2 : expr3;
Вычисляется выражение expr1. Если его значением является true, оценивается expr2, если false, то expr3. Данный фрагмент кода:
int min( int ia, int ib ) |
{ return ( ia < ib ) ? ia : ib; }
эквивалентен
int min(int ia, int ib) { if (ia < ib) return ia; else return ib; |
}
Приведенная ниже программа иллюстрирует использование условного оператора:
#include <iostream> int main() { int i = 10, j = 20, k = 30; cout << "Большим из " << i << " и " << j << " является " << ( i > j ? i : j ) << end1; cout << "Значение " << i << ( i % 2 ? " нечетно." : " четно." ) << endl; /* условный оператор может быть вложенным, * но глубокая вложенность трудна для восприятия. * В данном примере max получает значение * максимальной из трех величин */ int max = ( (i > j) ? (( i > k) ? i : k) : ( j > k ) ? j : k); cout << "Большим из " << i << ", " << j << " и " << k << " является " << max << endl; |
}
Результатом работы программы будет:
Большим из 10 и 20 является 20
Значение 10 четно.