Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_Cpp.doc
Скачиваний:
6
Добавлен:
20.11.2019
Размер:
603.14 Кб
Скачать

42 // Десятичная константа

0X42 // шестнадцатеричная константа, начинается с 0х

042 // Восьмеричная константа, начинается с 0

1.5. Арифметические операции.

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

k = 7%2 // результат равен 1

В языке С++ используется традиционные правила приоритета операций. Достойным отдельного упоминания являются инкремент и декремент ++ и --. Пример:

i++; //i увеличивается на 1. Равносильно i=i+1;

j--; //j уменьшается на 1. Можно написать и --j;

Между вариантами d++ и ++d есть некоторая разница. Сравните:

int d=1, e;

e=d++; //После этого оператора d=2, e=1

и

int d=1, e;

e=++d; //После этого оператора d=2, e=2

В первом случае сначала переменной e присваивается значение d, а затем d увеличивается на единицу, во втором случае наоборот, сначала увеличивается d, а затем выполняется оператор присваивания. То есть, действует правило: если оператор инкремента (декремента) расположен справа от переменной (префикс), то сначала выполняется присваивание, а затем увеличение (уменьшение) на единицу. А если оператор расположен слева (постфикс), то сначала выполняется оператор инкремента (декремента), а затем присваивание. Кроме операций инкремента и декремента в С++ используются и другие постфиксные и префиксные операции. Например, возможны такие выражения:

sum += i; // Равносильно sum=sum+i;

prod *= k; // Равносильно prod = prod*k;

Разумеется, такая форма записи возможна для всех арифметических операторов.

  • На начальном этапе изучения С++ рекомендую не очень “зацикливаться” на этих операциях. Писать эффективные программы можно и без их использования, впрочем, более подробно их описание приводится в Приложении 1.

Как писал Бьёрн Страуструп, при присваивании и арифметических операциях C++ выполняет все осмысленные преобразования между основными типами, чтобы их можно было сочетать без ограничений:

double d = 1;

int i = 1;

d = d + i;

i = d + i;

  • Очевидно, что последнее преобразование чревато ошибкой, так как длина целочисленной переменной i меньше длины вещественной переменной d !

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

d = d + double(i);

Явное преобразование типов, выполненное к переменной типа char, позволяет получить ее номер в таблице символов ASCII. И наоборот, явно преобразуя целочисленную переменную к типу char, получаем соответствующий её номеру символ в ASCII – таблице:

#include <iostream.h>

Void main()

{

int i;

cout<<”input integer number < 128 ”; // приглашение ввести целое число,

// меньшее 128

cin>>i; // ввод числа с клавиатуры

cout<<char (i)<<endl; // явное преобразование, вывод символа

}

В приведенном примере используется потоковый ввод значения переменной со стандартного устройства ввода (клавиатуры) при помощи cin. Строка текста, которая предшествует объекту cin не обязательна, но очень полезна, т.к. поясняет пользователю программы, что от него требуется. Обратите внимание на специальное «слово» - endl. Оно предписывает после вывода символа char(i) перевести курсор на новую строку.

Контрольные вопросы. А

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]