Приоритет операторов
Часть раздела Основы путешествия по PHP на Coddy. Урок 20 из 71.
Когда выражение содержит несколько операторов, PHP следует определённому порядку, называемому приоритетом операторов. Как и в математике, умножение и деление выполняются до сложения и вычитания.
<?php
echo 5 + 3 * 2; // Выводит: 11, а не 16
?>PHP сначала умножает 3 × 2 (получая 6), затем прибавляет 5. Если бы операторы имели одинаковый приоритет, он выполнял бы вычисления слева направо: 5 + 3 = 8, затем 8 × 2 = 16. Но это не так.
Вот порядок приоритета от самого высокого к самому низкому для изученных вами операторов:
| Приоритет | Операторы |
| Самый высокий | ** (возведение в степень) |
| Высокий | * / % |
| Низкий | + - |
Чтобы изменить порядок по умолчанию, используйте скобки. Операции внутри скобок всегда выполняются в первую очередь:
<?php
echo (5 + 3) * 2; // Выводит: 16
echo 2 ** 3 * 2; // Выводит: 16 (8 * 2)
echo 2 ** (3 * 2); // Выводит: 64 (2^6)
?>Если сомневаешься, используй скобки, чтобы ясно выразить свои намерения. Это делает код более читабельным и предотвращает неожиданные результаты.
Задание
ЛегкоRead три числа из input: a, b и c.
Calculate и выведи result следующего выражения, используя скобки, чтобы сложение произошло перед умножением:
(a + b) * c ** 2
Это означает: first сложить a и b, затем умножить эту сумму на c, возведённое в степень 2.
Пример:
Если на вход подаются 2, 3 и 4, результатом должно быть 80, потому что:
- First сложить 2 + 3 = 5
- Затем вычислить 4 ** 2 = 16
- Наконец умножить 5 * 16 = 80
Попробуйте сами
<?php
// Читать ввод
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: Напишите ваш код ниже, чтобы вычислить (a + b) * c ** 2
// Вывести результат
echo $result;
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравненияРавенство и идентичностьЛогические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логика2Переменные и типы данных
ЧислаСтроки и кавычкиБулевы значенияСоглашения об именованииПовторение — инициализация переменныхПустые переменныеКонкатенация строкПолучение пользовательского вводаПриведение к другим типам5Условная логика
Оператор ifIf — ElseТернарный операторОператор нулевого слиянияОператор switchПовторение: принятие решений3Основные операторы
Арифметические операторыОператор остатка от деленияОператор возведения в степеньСоставное присваиваниеИнкремент/декрементПриоритет операторовПовторение — простые вычисленияОператоры строкПотренируйтесь самостоятельно: Онлайн-компилятор PHP