Операция последовательного вычисления
Операция последовательного вычисления последовательно вычисляет два своих операнда, сначала первый, затем второй. Оба операнда являются выражениями. Синтаксис операции:
<выражение1>, <выражение2>
Знак операции - запятая, разделяющая операнды. Результат операции имеет значение и тип второго операнда. Ограничения на типы операндов (т. е. типы результатов выражений) не накладываются, преобразования типов не выполняются.
Операция последовательного вычисления обычно используется для вычисления нескольких выражений в ситуациях, где по синтаксису допускается только одно выражение.
Примеры:
/* пример 1 */
for(i=j=1; i+j<20; i+=i, j--)…
/* пример 2 */
func_one( x, у + 2, z);
func_two((x--, y + 2), z);
В первом примере каждый операнд третьего выражения оператора цикла for
вычисляется независимо. Сначала вычисляется i+=i, затем j--.
Во втором примере символ "запятая" используется как разделитель в двух различных контекстах. В первом вызове функции func_onc передаются три аргумента, разделенных запятыми: х,
у+2,
2. Здесь символ "запятая" используется просто как разделитель
В вызове функции func_two внутренние скобки вынуждают компилятор интерпретировать первую запятую как операцию последовательного вычисления. Этот вызов передает функции func_two два аргумента. Первый аргумент — это результат последовательного вычисления (х--,у+2), имеющий значение и тип выражения у+2. Вторым аргументом является z.