Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции АиП.doc
Скачиваний:
90
Добавлен:
15.11.2018
Размер:
668.67 Кб
Скачать

Лекция № 3. Операторы

    1. Математические операторы

В языке С++ операторы управляют последовательностью выполнения выражений, возвращают результаты вычислений или ничего не делают (пустые операторы). Операторы последовательного действия выполняют определенные действия над операндами – одно за другим, как показано на схеме рис. 3.1.

Рис. 3.1. Обозначение операторов последовательного действия на блок-схеме алгоритма программы

Все выражения языка С++ оканчиваются точкой с запятой. Пустые операторы представляют собой просто точку с запятой. Самый простой пример выражения – это операция присвоения значения:

x=a+b;

Здесь a и b – операнды, а x – результат операции. В отличие от алгебры, это выражение не означает, что x равняется a+b. Данное выражение следует понимать так: присвоим результат суммирования значений переменных a и b переменной x. Несмотря на то, что в этом выражении одновременно выполняются два действия (вычисление суммы и присвоение значения), после него устанавливается только один символ точки с запятой.

Оператор присвоения (=) присваивает результаты операций, выполняемых над операндами, расположенными справа от знака равенства, операнду, находящемуся слева от него.

Арифметические операторы. Существуют пять арифметических операторов: сложения (+), вычитания (-), умножения (*), целочисленного деления (/) и деления по модулю (%).

Вычитание беззнаковых чисел может преподнести сюрприз, если полученная разность окажется отрицательным числом.

Целочисленное деление несколько отличается от обычного. В случае целочисленного деления числа 21 на число 4 (21/4) в ответе получается 5. Чтобы получить остаток, число 21 необходимо разделить по модулю на 4 (21%4), в результате получим остаток 1.

Для получения дробного результата нужно использовать вещественные числа. Например, выражение 21.0/4.0 даст дробный ответ 5.25. Если делимое и делитель имеют вещественный тип, то результат также будет иметь вещественный тип. Но если результат присваивается целочисленной переменной, то значение будет усечено.

Очень часто в программах к переменным добавляется (или вычитается) единица. В языке С++ увеличение значения на единицу называется инкрементом, а уменьшение – декрементом. Для этих действий предусмотрены специальные операторы.

Оператор инкремента (++) увеличивает значение переменной на единицу, а оператор декремента (--) уменьшает его на единицу. Так, если переменную Counter необходимо увеличить на единицу, то можно использовать следующее выражение:

Counter++; // Увеличить значение Counter на единицу

Этот оператор эквивалентен подробному:

Counter= Counter+1;

Можно было бы подумать, что язык С++ получил свое имя после применения оператора приращения к имени языка его предшественника С. Так и есть: С++ является инкрементным приращением языка С.

Как оператор инкремента (++), так и оператор декремента (--) существуют в двух вариантах: префиксном и постфиксном. Префиксный вариант записывается перед именем переменной (++myAge), а постфиксный – после него (myAge++). В простом выражении вариант использования не имеет большого значения, но в сложном, при выполнении приращения одной переменной с последующим присвоением результата другой переменной, это весьма существенно.

Префиксный оператор вычисляется до присвоения, а постфиксный – после. Рассмотрим следующий пример. Предположим, что целочисленная переменная x имеет значение 5. Выражение int a = ++x; сообщает компилятору, что переменную x необходимо увеличить на единицу (сделав равной 6), а затем присвоить это значение переменной а. Следовательно, значение переменной а теперь равно 6 и значение переменной x тоже равно 6.

Если затем написать int b = x++, то компилятор получит команду сначала присвоить переменной b текущее значение переменной x (равное 6), а затем увеличить переменную x на единицу. В этом случае значение переменной b будет равно 6, а переменной x – 7.