Изменение переменных
Часто новое значение переменной вычисляют из текущего. Игрок подобрал монету, и его счёт вырос на 10:
int score = 30;
score = score + 10;
printf("%d\n", score);Выведется:
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;(сintэто целочисленное деление)score++;прибавляет 1, аscore--;вычитает 1
int money = 100;
money -= 30; // купили книгу
money += 50; // продали старую игру
money *= 2; // бабушка удвоила сбережения
printf("Деньги: %d EUR\n", money);
int visits = 0;
visits++;
visits++;
printf("Посещений: %d\n", visits);Выведется:
Деньги: 240 EUR
Посещений: 2Вы ещё не раз увидите ++ в циклах, где он считает 1, 2, 3 и так далее.
Типичные ошибки, которые компилятор на этом сайте не останавливает, так что вы видите только неверный результат:
score + 10;само по себе не меняет переменную. Результат вычисляется и сразу выбрасывается, потому что его никуда не сохранили.score =+ 10;с переставленными знаками означаетscore = +10;: в переменную сохраняется 10. Пишите+=: плюс перед знаком равенства, без пробела между ними.
Задание
- 1
Под первым комментарием прибавьте 10 к
scoreс помощью+=. - 2
Под вторым комментарием заберите у игрока одну жизнь с помощью
--. - 3
Под третьим комментарием удвойте счёт с помощью
*=. Тогда программа должна вывести:Счёт: 100 Жизни: 2