642_____________________________________________Глава 11

а=4;

b = а + 5;

можно записать как

a=4,b=a+5;

Можно рекурсивно соединить операциями запятая последовательность выра-
жений:

выражение I/ выражение 2, ..., выражение п

Выражения будут вычисляться слева направо, а самое правое выражение
определит значение и тип всей этой последовательности.

Соединяться запятыми могут не только выражения присваивания, но и дру-
гие. Например, вызов функции с тремя параметрами может иметь вид

func(i, (j = 1, j + 4), k) ;

Здесь в качестве второго параметра передается значение операции последова-
ния, заключенной в скобки. В результате вызов производится со следующими ар-
гументами: (i, 5, k).

Операция последования используется в основном в операторах цикла for (см.
раздел 11.8.2.1) для задания в заголовке некоторой совокупности действий. На-
пример, цикл подсчета суммы элементов некоторого массива можно осуществить
циклом for без использования операции последования:

int А[10], sum, i;

sum = A[0] ;

for (int i = 1; i < 10; i++)
sum += A[i];

То же самое можно реализовать более компактно с помощью операции после-
дования:

int А[10], sum, i;

for (i = 1, sum = A[0]; i < 10; sum += A[i], i++);

Здесь операция последования использована дважды: при задании действий,
выполняемых перед началом цикла (задание начальных значений i и sum), и прк
описании действий, выполняемых в теле цикла (суммирование значений элемен-
тов в sum и инкремент счетчика i.

Хороший стиль программирования

Не используйте без нужды операцию последования (,). Применение ее оправдано только
при объединении одинаковых по смыслу выражений в основном в операторах циклов. Бо-
лее широкое применение операции последования ухудшает читаемость кода, маскирует
ошибки, усложняет сопровождение программы.

11.7.8 Условная операция (?:)

Условная операция (?:) — единственная трехчленная (тернарная) операция в
C++, имеющая три операнда. Ее синтаксис:

условие ? выражение_1 : выражение_2

Первый операнд является условием, второй операнд содержит значение услов-
ного выражения в случае, если условие истинно (возвращает ненулевое значение),
а третий операнд равен значению условного выражения, если условие ложно (воз-
вращает нуль). Например, оператор