DamiRocK

JavaScript: коммутативность, 2⁸ и деление 9 на 3

Проверяем, какие перестановки операндов сохраняют результат. Выводим 256 и 3, отличаем возведение в степень от XOR.

Когда порядок не меняет результат

Для обычных небольших целых чисел сложение коммутативно: 3+2 и 2+3 равны 5. Вычитание не обладает этим свойством: 2−3 равно −1, а 3−2 — 1. Деление и возведение в степень тоже чувствительны к порядку операндов.

Задание источника

Выведите два результата: число 2 в восьмой степени и частное 9 и 3.

console.log(2 ** 8);
console.log(9 / 3);

Программа напечатает 256, затем 3. В отличие от типичного вывода Python для обычного деления, здесь целый результат Number отображается без обязательного суффикса .0.

Перестановка меняет задачу

8 ** 2 равно 64, а не 256. 3 / 9 приближённо равно одной трети, а не 3. Даже если операция использует те же два числа, их роли могут быть разными: основание и показатель, делимое и делитель.

Знак степени

В JavaScript для возведения в степень используется **. Символ ^ обозначает побитовое исключающее ИЛИ и не является альтернативной записью степени. Поэтому 2 ^ 8 вычислит совершенно другой результат.

Не переносить правило на другие типы

Оператор плюс также соединяет строки. 'ab' + 'cd' даёт abcd, а перестановка — cdab. Коммутативность относится к конкретной операции над определёнными значениями, а не к символу плюс во всех возможных контекстах программы.

Проверка исходного упражнения проста: выполните оба выражения и сравните две отдельные строки с 256 и 3, не заменяя вычисление заранее написанным текстом ответа.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Выражения сохранены; роль операторов уточнена.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.