Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программирование C++ 2014n.docx
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
887 Кб
Скачать
☆

2.6. Операторы

Оператор – это основной элемент языка программирования, представляющий собой законченную фразу и определяющий некоторый логически завершенный этап обработки данных.

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

Среди исполняемых операторов можно выделить:

  • простые операторы (оператор-выражение, операторы передачи управления);

  • составные операторы (составной оператор, блок)

  • структурированные операторы (условный, выбора, цикла).

Рассмотрим простые операторы

Оператор «выражение»

Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор (;). Он используется, когда по синтаксису оператор требуется, а по смыслу нет.

Примеры:

x ++; // выражение – оператор; выполняется операция инкремента

c = a * 1.5; // выражение с операцией присваивания

a *= b + c; // выполняется умножение с присваиванием: a = a * (b + c)

fun(i, k); // выполняется вызов функции

Оператора присваивания в языке С++ нет, его заменяет выражение, в составе которого есть операция присваивания.

Общий вид:

идентификатор = выражение;

Пример: x = y + 4; // выражение с операцией присваивания

Выполняется в два этапа:

а) вычисляется значение выражения, стоящего в правой части от знака присваивания;

б) вычисленное значение присваивается переменной, стоящей в левой части от знака присваивания, при этом предыдущее значение этой переменной теряется.

Рекомендуется строго относиться к типам данных, не смешивать типы в выражениях, следить, чтобы тип левого операнда присваивания соответствовал типу выражения правой части.

При выполнении присваивания, если типы левой и правой части не совпадают, происходит неявное преобразование. С++ всегда пытается это сделать, и упрощенно можно считать, что преобразование происходит без потери данных от меньшего типа к большему, например от int к float или от char к int, и с потерей данных от большего типа к меньшему, например, от float к int. Это легко понять, если вспомнить, что тип данного, это объем занятой им памяти.

Явное преобразование типов выполняется при присваивании вида:

имя = (тип) выражение;

Например:

int a = 5, b = 2;

float c;

с = a / b;

Хочется думать, что значение с будет равно 2.5, ведь оно вещественное, но порядок операций таков, что деление старше присваивания, и оно выполняется с операндами целого типа, и его результат равен 2, то есть приведение типа будет выполнено только при присваивании.

Для явного преобразования типов используется известный прием:

c = (float) a / (float) b; // c = 2.5

Операция присваивания правоассоциативна, т.е. вычисления выполняются справа налево, поэтому допускается запись цепочек присваиваний, например:

x = y =z = 1; // Каждая переменная будет равна 1.

В сложных операциях присваивания ( +=, *=, /= и т п.) при вычислении выражения, стоящего в правой части, используется и L-значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение a += b является более компактной записью выражения a = a + b.

Еще один вид операторов, который можно отнести к операторам-выражениям, это оператор обращения к функции (вызов функции). Его операндам являются параметры функции.

Формат оператора:

имя функции ([список фактических параметров] – может отсутствовать);

Например:

scanf ("%d%f", &my_int, & my_float); // ввод данных

printf ("Целое = %d, Вещественное = %f\n", my_int, my_float) // вывод

Пробелы в строке текста являются значащими, то есть, если ввести целое 5 и дробное 9.9, то строка вывода будет иметь вид:

Целое = 5, Вещественное = 9.900000

Операторы передачи управления рассмотрим позже (п. 3.6, п. 4.1)