4.7. Условное выражение

4.7. Условное выражение

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