Operator Precedence
Часть раздела Основы путешествия по 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)
?>Если сомневаетесь, используйте круглые скобки, чтобы сделать ваши намерения понятными. Это делает ваш код более читаемым и предотвращает неожиданные результаты.
Задание
ЛегкоПрочитайте три числа из входных данных: a, b и c.
Вычислите и выведите результат следующего выражения, используя скобки, чтобы сложение выполнялось перед умножением:
(a + b) * c ** 2
Это означает: сначала сложите a и b, затем умножьте полученную сумму на c, возведенное в степень 2.
Пример:
Если входные данные равны 2, 3 и 4, результатом должно быть 80, потому что:
- Сначала сложите 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;
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators