Menu
Coddy logo textTech

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)
?>

Если сомневаетесь, используйте скобки, чтобы сделать свои намерения ясными. Это делает ваш код легче для чтения и предотвращает неожиданные результаты.

challenge icon

Задание

Легко

Прочитайте три числа из ввода: 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 следует правилам приоритета операторов при вычислении выражений с несколькими операторами:

ПриоритетОператоры
Наивысший** (возведение в степень)
Высокий* / %
Низкий+ -
<?php
echo 5 + 3 * 2; // Outputs: 11 (multiplication first)
?>

Используйте скобки, чтобы изменить порядок по умолчанию. Операции внутри скобок вычисляются первыми:

<?php
echo (5 + 3) * 2;  // Outputs: 16
echo 2 ** 3 * 2;   // Outputs: 16 (8 * 2)
echo 2 ** (3 * 2); // Outputs: 64 (2^6)
?>

Попробуйте сами

<?php
// Чтение ввода
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));

// TODO: Напишите свой код ниже для вычисления (a + b) * c ** 2

// Вывод результата
echo $result;
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы