Точки следования C

Между последовательными «точками последовательности» значение объекта может быть изменено только один раз с помощью выражения. В языке C определены следующие точки последовательности.

  • Левый операнд логического оператора AND (&>). Перед продолжением левый операнд оператора логического AND полностью вычисляется и учитываются все побочные эффекты. Если левый операнд имеет значение False (0), значение второго операнда не вычисляется.

  • Левый операнд оператора логического OR (||). Перед продолжением левый операнд оператора логического OR полностью вычисляется и учитываются все побочные эффекты. Если левый операнд имеет значение True (не равен нулю), значение второго операнда не вычисляется.

  • Левый операнд оператора запятой. Перед продолжением левый операнд оператора запятой полностью вычисляется и учитываются все побочные эффекты. Оба операнда оператора запятой вычисляются всегда. Обратите внимание, что оператор запятой в вызове функции не гарантирует порядок вычислений.

  • Оператор вызова функции. Перед переходом в функцию все ее аргументы полностью вычисляются и учитываются все побочные эффекты. Порядок вычисления для аргументов не определен.

  • Первый операнд условного оператора. Перед продолжением первый операнд условного оператора полностью вычисляется и учитываются все побочные эффекты.

  • Конец выражения полной инициализации (т. е. выражения, которое не является частью другого выражения, например конец инициализации в операторе объявления).

  • Выражение в операторе выражения. Операторы-выражения состоят из необязательного выражения с последующей точкой с запятой (;). Выражение вычисляется для учета его побочных эффектов, и после вычисления следует точка последовательности.

  • Управляющее выражение в операторе выбора (if или switch). Перед выполнением кода, зависящего от сделанного выбора, это выражение полностью вычисляется и учитываются все побочные эффекты.

  • Управляющее выражение оператора while или do. Перед выполнением любых операторов в следующей итерации цикла while или do это выражение полностью вычисляется и вступают в силу все побочные эффекты.

  • Каждое из трех выражений оператора for. Перед выполнением любых операторов в следующей итерации цикла for эти выражения полностью вычисляется и вступают в силу все побочные эффекты.

  • Выражение в операторе return. Перед возвратом управления в вызывающую функцию это выражение полностью вычисляется и учитываются все побочные эффекты.

См. также

Вычисление выражений