На этом шаге мы рассмотрим бинарные арифметические операции.
Все арифметические операции можно разбить на три группы:
Бинарные арифметические операции - это известные всем четыре арифметических действия:
Примененные к числовым данным или строковым, которые содержат правильные литералы десятичных чисел, они выполняют соответствующие арифметические действия:
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
Как видим, бинарные арифметические операции "работают" именно так, как мы привыкли их использовать в обычных арифметических вычислениях.
В качестве операндов бинарных арифметических операций можно использовать строки, не содержащие правильные числовые литералы. В этом случае интерпретатор попытается выделить, начиная с первого символа, из содержимого строки число и использовать его в качестве соответствующего операнда заданной операции. Если не удается выделить правильный числовой литерал, то операнд принимает значение, равное 0. Подобные ситуации демонстрируются ниже.
"3f14" + "12-30"; # Результат: 15 ("3" + "12") "a120" + "12-30"; # Результат: 12 ("0" + "12") "a120" + "-0012-30"; # Результат: -12 ("0" + "-12")
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)
На следующем шаге мы рассмотрим унарные арифметические операции.