Условное выражение
Условное выражение, или оператор выбора, предоставляет возможность более компактной записи текстов, включающих инструкцию 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 четно.