×
Traktatov.net » Освой самостоятельно С++ за 21 день » Читать онлайн
Страница 37 из 448 Настройки

Листинг 4.3. Приведение переменной к типу float 

1: #include

2:

3: void intDiv(int x, int y)

4: {

5:    int z = x / y;

6:    cout << "z: " << z << endl;

7: }

8:

9:  void floatDiv(int x, int y)

10: {

11:    float a = (float)x; // старый стиль

12:    float b = static_cast(y);   // современный стиль

13:    float c = a / b;

14:

15:    cout << "c: " << c << endl;

16: }

17:

18: int main()

19: {

20:    int x = 5, y = 3;

21:    intDiv(x,y);

22:    floatDiv(x,y);

23:    return 0;

24: }


Результат:

z: 1

с: 1.66667


Анализ: В строке 20 объявляются две целочисленные переменные. В строке 21 они как параметры передаются функции intDiv, а в строке 22 — функции floatDiv. Вторая функция начинается со строки 9. В строках 11 и 12 целые значения приводятся к вещественному типу и присваиваются переменным типа float. Результат деления присваивается третьей переменной типа float в строке 13 и выводится на экран в строке 15.

Совместное использование математических операторов с операторами присваивания

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


int myAge = 5;

int temp;

temp = myAge + 2; // складываем 5 + 2 и результат помещаем в

temp myAge = temp; // значение возраста снова помещаем в myAge


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


myAge = myAge + 2;


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

Существует еще более простой вариант предыдущей записи, хотя его труднее читать:


myAge += 2;


Этот оператор присваивания с суммой (+=) добавляет r-значение к l-значению, а затем снова записывает результат в l-значение. Если бы до начала выполнения выражения переменная myAge имела значение 4, то после ее выполнения значение переменной myAge стало бы равным 6.

Помимо оператора присваивания с суммой существуют также оператор присваивания с вычитанием (-=), делением (/=), умножением (*=) и делением по модулю (%=).

Инкремент декремент

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

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


C++; // Увеличение значения С на единицу


Это же выражение можно было бы записать следующим образом:


С = С + 1;


что, в свою очередь, равносильно выражению.


С += 1;

Префикс и постфикс

Как оператор инкремента, так и оператор декремента работает в двух вариантах: префиксном и постфиксном. Префиксный вариант записывается перед именем переменной (++myAge), а постфиксный — после него (myAge++).