Поделиться через


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

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

Блок, относящийся только к системам Microsoft

В языке C++ в настоящее время точки следования не определены. В Microsoft C++ для любого выражения, содержащего операторы C и не содержащего перегруженные операторы, используются те же точки следования, что и в ANSI C. Когда операторы перегружены, семантика изменяется с последовательности операторов на последовательность вызовов функций. В Microsoft C++ используются следующие точки следования.

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

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

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

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

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

  • Конец полного выражения инициализации, например конец инициализации в операторе объявления.

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

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

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

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

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

См. также

Ссылки

Семантика выражений