Шаг 68.
Операции и выражения. Арифметические операции. Бинарные арифметические операции

    На этом шаге мы рассмотрим бинарные арифметические операции.

    Все арифметические операции можно разбить на три группы:

Их основное назначение - выполнить определенные вычисления над числовыми данными, но во всех арифметических операциях в качестве операндов могут выступать и строковые данные, причем не обязательно, чтобы они конвертировались в числовые данные.

Бинарные арифметические операции

    Бинарные арифметические операции - это известные всем четыре арифметических действия:

к которым добавляются еще два:

    Примененные к числовым данным или строковым, которые содержат правильные литералы десятичных чисел, они выполняют соответствующие арифметические действия:

  3.14 + 123;        # Результат: 126.14
  "3.14" + "123";    # Результат: 126.14
  "3.14" + 123;      # Результат: 126.14
  "3.14" * 10;       # Результат: 31.4
  300 - 200;         # Результат: 100
  300 / 200;         # Результат: 1.5
  3 % 2;             # Результат: 1
  2 ** 3;            # Результат: 8
  (-2) ** 3;         # Результат: -8
  2 ** (-3);         # Результат: 0.125
  2.5 ** 1.5;        # Результат: -23.95284707521047

    Как видим, бинарные арифметические операции "работают" именно так, как мы привыкли их использовать в обычных арифметических вычислениях.


    Замечания.
  1. Если операнд в операции получения остатка от деления целых чисел (%) является вещественным числом с дробной частью, то он преобразуется к целому простым отбрасыванием дробной части, после чего операция выполняется над целыми числами.
  2. Нельзя возводить отрицательное число не в целую степень. Если такое случается, то интерпретатор не выдает никакой ошибки, но результатом такой операции является нуль: (-2.5) ** (1.3) = 0.

    В качестве операндов бинарных арифметических операций можно использовать строки, не содержащие правильные числовые литералы. В этом случае интерпретатор попытается выделить, начиная с первого символа, из содержимого строки число и использовать его в качестве соответствующего операнда заданной операции. Если не удается выделить правильный числовой литерал, то операнд принимает значение, равное 0. Подобные ситуации демонстрируются ниже.

  "3f14" + "12-30";     # Результат:  15 ("3" + "12")
  "a120" + "12-30";     # Результат:  12 ("0" + "12")
  "a120" + "-0012-30";  # Результат:  -12 ("0" + "-12")


    Замечание. Если установить режим отображения предупреждающих сообщений интерпретатора (ключ -w), то при попытке использовать в бинарных арифметических операциях строки, не содержащей правильные числовые литералы, будет отображено сообщение вида:
  Argument "a!20" isn't  numeric in add at D:\EXAMPLE1.PL line 2.

    Бинарные арифметические операции выполняются в скалярном контексте. Это означает, что операндами должны быть скалярные переменные, а переменные массивов скаляров и хеш-массивов принимают значения, равные, соответственно, количеству элементов массивов скаляров или количеству использованных в хеш-таблице записей в соответствии с требованиями скалярного контекста:

  @m = (2, 4, 6, 8, 10) ;
  %m1 = ( 1 => "a", 2 => "b");
  $n = 100;
  $n + @m;  # Результат: 105 (100 + 5)
  @m + %m1; # Результат: 7 (5+2)


    Замечание. В скалярном контексте хеш-массив принимает строковое значение, состоящее из числа использованных участков записей в хеш-таблице и числа выделенных участков записей, разделенных символом "/". Используемое в арифметических операциях число получается выделением из этой строки числового литерала, который как раз и соответствует количеству использованных в хеш-таблице записей.

    На следующем шаге мы рассмотрим унарные арифметические операции.




Предыдущий шаг Содержание Следующий шаг