Пространства имён
Варианты
Действия

Операторы

Материал из cppreference.com
< cpp‎ | language

Операторы - это фрагменты кода С++, которые выполняютсяв определенной последовательности. Тело любой функции представляет собой последовательность операторов.Например:

int main()
{
    int n = 1;                        // Оператор присваивания
    n = n + 1;                        // Оператор выражения
    std::cout << "n = " << n << '\n'; // Оператор выражения
    return 0;                         // Оператор return
}

C++ включает в себя несколько типов операторов:

1) Выражения;
2) Составные операторы;
3) Условные операторы;
4) Операторы повтора;
5) Операторы перехода;
6) Оператор присваивания;
7) try blocks;
8) atomic and synchronized blocks (TM TS).

Содержание

[править] Объявление

Любой оператор может быть "объявлен", следом за именем объявления должно стоять двоеточие и сам оператор.

attr (необязательно) identifier : statement (1)
attr (необязательно) case constexpr : statement (2)
attr (необязательно) default : statement (3)

Последовательность атрибутов attr может быть определена только перед меткой(в этом случае она применяется к метке), или непосредственно перед любым оператором, в этом случае она применяется ко всему оператору. Инструкция может содержать несколько меток. Метки (и только метки) имеют область действия функции. Метки игнорируются при неполном поиске: метка может иметь то же имя, что и любая другая сущность в программе.

[править] Выражения

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

attr(необязательно) expression (необязательно) ; (1)
attr (C++11) необязательный список атрибутов
expression выражение

Большинство операторов в типичной программе С++ - это выражения, такие как присвоение или вызовы функций.

Оператор выражения, без выражения, называется "пустым оператором". Это часто используется, чтобы обеспечить пустое тело для цикла for или while.

An expression statement without an expression is called a null statement. It is often used to provide an empty body to a for or while loop. It can also be used to carry a label in the end of a compound statement.

[править] Составные операторы

Составные опараторы или блоки - это блки, заключенные в фигурные скобки.

attr (необязательно) { операторы... (необязательно) } (1)

Когда должно быть выполнено несколько операторов в определенной последовательности, например в операторе if или цикле, может быть испольован составной оператор:

if (x > 5)          // начало оператора if
{                   // начало составного оператора
    int n = 1;      // оператор присваивания
    std::cout << n; // выражение
}                   // конец составного оператора, конец оператора if

Каждый составной оператор включает свою область видимости; переменные, объявленные внутри блока будут уничтожены при выходе из него в обратной последовательности:

int main()
{
    {                                // начало блока
        std::ofstream f("test.txt"); // оператор присваивания
        f << "abc\n";                // выражение
    }                                // конец блока: f обнуляется и уничтожается
    std::ifstream f("test.txt"); 
    std::string str;
    f >> str; 
}

[править] Selection statements

Selection statements choose between one of several flows of control.

attr(необязательно) if ( condition ) statement (1)
attr(необязательно) if ( condition ) statement else statement (2)
attr(необязательно) switch ( condition ) statement (3)
(до C++17)
attr(необязательно) if constexpr(необязательно) ( init-statement(необязательно) condition ) statement (1)
attr(необязательно) if constexpr(необязательно) ( init-statement(необязательно) condition ) statement else statement (2)
attr(необязательно) switch ( init-statement(необязательно) condition ) statement (3)
(начиная с C++17)
1) if statement;
2) if statement with an else clause;
3) switch statement.

[править] Iteration statements

Iteration statements repeatedly execute some code.

attr(необязательно) while ( condition ) statement (1)
attr(необязательно) do statement while ( expression ) ; (2)
attr(необязательно) for ( init-statement condition(необязательно) ; expression(необязательно) ) statement (3)
attr(необязательно) for ( for-range-decl : for-range-init ) statement (4) (начиная с C++11)
1) while loop;
2) do-while loop;
3) for loop;
4) range for loop.

[править] Jump statements

Jump statements unconditionally transfer flow control

attr(необязательно) break ; (1)
attr(необязательно) continue ; (2)
attr(необязательно) return expression(необязательно) ; (3)
attr(необязательно) return braced-init-list ; (4) (начиная с C++11)
attr(необязательно) goto identifier ; (5)
1) break statement;
2) continue statement;
3) return statement with an optional expression;
4) return statement using list initialization;
5) goto statement.

Note: for all jump statements, transfer out of a loop, out of a block, or back past an initialized variable with automatic storage duration involves the destruction of objects with automatic storage duration that are in scope at the point transferred from but not at the point transferred to. If multiple objects were initialized, the order of destruction is the opposite of the order of initialization.

[править] Declaration statements

Declaration statements introduce one or more identifiers into a block.

block-declaration ; (1)
1) see Declarations and Initialization for details.

[править] Try blocks

Try blocks provide the ability to catch exceptions thrown when executing other statements.

attr(необязательно) try compound-statement handler-sequence (1)
1) see try/catch for details.

Atomic and synchronized blocks

Atomic and synchronized blocks are used to implement transactional memory.

synchronized compound-statement (1) (TM TS)
atomic_noexcept compound-statement (2) (TM TS)
atomic_cancel compound-statement (3) (TM TS)
atomic_commit compound-statement (4) (TM TS)
1) synchronized block, executed in single total order with all synchronized blocks;
2) atomic block that aborts on exceptions;
3) atomic block that rolls back on exceptions;
4) atomic block that commits on exceptions.
(TM TS)

[править] See also

Справка по CStatements