Изменение переменных
Часто новое значение переменной вычисляют из её текущего значения. Игрок подбирает монету, и его счёт растёт на 10:
int score = 30;
score = score + 10;
std::cout << score << "\n";Это выведет:
40В математике score = score + 10 не имело бы смысла. Но в C++ = значит «сохранить»: сначала правая часть вычисляется с текущим значением (30 + 10), а потом результат, 40, сохраняется в score. Старое значение перезаписывается.
Программы делают это так часто, что в C++ для этого есть сокращения:
score += 10;означает то же, что иscore = score + 10;score -= 10;означаетscore = score - 10;score *= 2;означаетscore = score * 2;score /= 2;означаетscore = score / 2;score++;прибавляет 1, аscore--;вычитает 1
int money = 100;
money -= 30; // вы купили книгу
money += 50; // вы продали старую игру
money *= 2; // бабушка удвоила ваши сбережения
std::cout << "Деньги: " << money << " EUR\n";
int visits = 0;
visits++;
visits++;
std::cout << "Посещений: " << visits << "\n";Это выведет:
Деньги: 240 EUR
Посещений: 2++ вам чаще всего встретится в циклах, где он считает 1, 2, 3 и так далее. Он есть даже в названии языка: C++ — это язык C, «увеличенный на единицу».
Типичные ошибки:
score + 10;само по себе переменную не меняет. Результат вычисляется и сразу выбрасывается, потому что его никто не сохраняет. Программа при этом компилируется, поэтому вы не увидите ошибки, а только неверный результат.score =+ 10;с переставленными знаками тоже компилируется, но означаетscore = +10;: в переменную сохраняется 10. Пишите+=: плюс перед знаком равенства, без пробела между ними.
Задание
- 1
Под первым комментарием прибавьте к
scoreчисло 10 с помощью+=. - 2
Под вторым комментарием заберите у игрока одну жизнь с помощью
--. - 3
Под третьим комментарием удвойте счёт с помощью
*=. Тогда программа должна вывести:Счёт: 100 Жизни: 2