Вычисления
На прошлом уроке вы считали с числами. С переменными это работает так же. Основные арифметические операторы (символы операций):
+сложение-вычитание*умножение (звёздочка, потому что на клавиатуре нет ×)/деление (косая черта вместо ÷), которое готовит вам сюрприз в следующем упражнении
Результат можно сохранить в переменной или сразу вывести:
int pencil_price = 2;
int pencils = 6;
int cost = pencil_price * pencils;
printf("Карандаши: %d EUR\n", cost);
printf("Сдача с 20: %d EUR\n", 20 - cost);Выведется:
Карандаши: 12 EUR
Сдача с 20: 8 EURКогда программа доходит до строки с cost, она вычисляет 2 * 6 и сохраняет результат, 12. Переменная хранит число, а не вычисление: если позже изменить pencils, cost всё равно останется 12.
Как и в математике, умножение и деление выполняются раньше сложения и вычитания. Операции с одинаковым приоритетом выполняются слева направо. Если нужен другой порядок, используйте скобки:
printf("%d\n", 2 + 3 * 4);
printf("%d\n", (2 + 3) * 4);Выведется:
14
20В первой строке сначала вычисляется 3 * 4, то есть 12, и только потом 2 + 12. Во второй строке первыми идут скобки.
Типичная ошибка — забыть скобки. Так среднее двух оценок за тест не посчитать:
int first = 70;
int second = 90;
printf("%d\n", first + second / 2);Программа выведет 115, потому что на два делится только вторая оценка: 70 + 90 / 2 — это 70 + 45. Правильно писать (first + second) / 2, что даёт 80.
На что ещё нужно обращать внимание:
- Умножение нужно писать всегда.
2(a + b)заканчивается ошибкойcalled object type 'int' is not a function or function pointer; пишите2 * (a + b). - Пробелы вокруг операторов не меняют результат. Мы пишем их, потому что с ними код легче читать.
- У
intесть предел: самое большое число, которое он хранит, — 2147483647, около двух миллиардов (а самое маленькое — около минус двух миллиардов). Если результат не помещается, программа останавливается с сообщениемRuntimeError: unreachable. Оно мало что говорит, так что запомните: пока оно означает, что число стало слишком большим.
Задание
- 1
Вы втроём идёте в кино, и каждый покупает билет и попкорн. Ниже создайте переменную
totalтипаintи сохраните в ней, сколько вы платите всего. Посчитайте это по переменным: цена билета и попкорна, умноженная на число людей. - 2
Выведите
totalтак:Итого: 54 EUR. Если программа выводит 30, ещё раз посмотрите на порядок операций. - 3
У вас есть купон на скидку 10 EUR. На следующей строке выведите цену со скидкой, посчитанную по
total:Со скидкой: 44 EUR