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