Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Циклы.docx
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
1.57 Mб
Скачать

Выражения и операторы

Управляющий раздел for включает три выражения.

Любое значение или любая допустимая комбинация выражений и операций составляет вы­ражение.

Например, 10 — это выражение со значением 10, а

28 * 20 — выражение со значением 560. В C++ любое выражение имеет свое значе­ние. Часто оно вполне очевидно. Например, следующее выражение формируется из двух значений и операции сложения, и оно равно 49:

22 + 27

Иногда значение не столь очевидно. Например, показанный ниже код — это тоже выражение, потому что формируется из двух значений и операции присваивания:

X = 20

В C++ значение выражения присваивания определяется как значение его левой части, поэтому данное выражение имеет значение 20. Тот факт, что выражения при­сваивания имеют значения, означает, что допускаются операторы вроде такого:

maids = (cooks = 4) + 3;

Выражение cooks = 4 имеет значение 4, поэтому maids присваивается значение 7. Однако то, что C++ допускает подобное поведение, не значит, что вы должны зло­употреблять им. То же самое правило, которое разрешает такие специфические операторы, также означает, что разрешен следующий удобный оператор:

х = у = z = 0;

Это быстрый способ установки одного и того же значения нескольким перемен­ным. Согласно приоритету, присваивание ассоциируется справа налево, поэтому первый 0 присваивается z, затем z = 0 присваивается у и т.д.

И, наконец, выражения отношений, такие как х < у, вычисляются как значения true и false типа bool.

#include <iostream>

int main()

{

using namespace std;

int x;

cout << "The x = 100 has the value ";

cout << (x = 100) << endl;

cout << "Now x = " << x << endl;

cout << "The x < 3 has the value ";

cout << (x < 3) << endl;

cout << "The x > 3 has the value ";

cout << (x > 3) << endl;

cout.setf(ios_base::boolalpha); //новое средство C++

cout << "The x < 3 has the value ";

cout << (x < 3) << endl;

cout << "The x > 3 has the value ";

cout << (x > 3) << endl;

getchar();

return 0;

}

От выражения до оператора программы один шаг; для этого достаточно добавить точку с запятой. То есть следующий код будет выражением:

age = 100

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

age = 100;

Точнее, это оператор выражения. Любое выражение может стать оператором, если к нему добавить точку с запятой, но результат может не иметь смысла с точки зрения программы. Например, если rodents — переменная, то следующий код представляет собой допустимый оператор C++:

rodents + 6;

// допустимое, однако бессмысленное выражение

Компилятор разрешает такой оператор, но он не делает ничего полезного. Прог­рамма просто вычисляет сумму, ничего с ней не делает и переходит к следующему опе­ратору.

Не выражения и операторы

Некоторые концепции, такие как структуры или цикл for, являются ключевыми для понимания C++.

Но существуют также относительно менее значимые аспекты синтаксиса, которые иногда могут сбивать с толку, когда уже кажется, что язык впол­не понятен. Несколько из них мы сейчас рассмотрим.

Хотя утверждение о том, что добавление точки с запятой к любому выражению превращает его в оператор, справедливо, обратное не верно. То есть исключение точки с запятой из оператора не обязательно преобразует его в выражение. Из всех разновидностей операторов, которые мы рассмотрели до сих пор, операто­ры возврата, операторы объявления и операторы for не укладываются в правило оператор = выражение + точка с запятой. Например, вот оператор:

int load;

Однако фрагмент int load не является выражением и не имеет значения. Это делает следующий код некорректным:

eggs = int toad * 1000; //не верно, это — не выражение

cin >> int toad; // нельзя комбинировать объявление с cin

Подобным же образом нельзя присваивать цикл for переменной. В следующем примере цикл for — это не выражение, поэтому он не имеет значения, и присваи­вать его не разрешено:

int fx = for (i = 0; i< 4; i++)

cout >> i; // невозможно