Оператор — базовая часть языка программирования, обозначающая некоторое действие, которое предстоит сделать с данными (операндами). То же: operator.
Например, есть арифметические операторы. С помощью оператора + складываются два числа, стоящие слева и справа от оператора. В некотором смысле операторы повышают читабельность кода. Например, можно было бы обойтись без того же оператора +. Мы бы тогда складывали числа с помощью вызова функций: sum(5,5) вместо 5+5. Но для человека более привычным является использование плюса.
Операторы обладают разным приоритетом. Например, умножить обладает большим приоритетом, чем сложить. Поэтому 5+5*5 всегда будет равно 30, а не 50.
Операторы бывают унарные и бинарные. Первым нужен только один операнд, вторым — два.
Операторы различаются по ассоциативности. Некоторые, например +, выполняются слева направо. Другие, например ++, выполняются справа налево. 1 + 2 + 4 выполнится следующим образом: сначала к единице прибавится двойка, а потом к получившейся тройке прибавится четвёрка.
Если мы желаем изменить порядок операций, какую-то часть выражения можно заключить в круглые скобки. У нас могут быть функции с побочным эффектом, и даже такие простые выражения вроде Foo(X) + Foo(Y) + Foo(Z) могут потребовать изменения порядка: Foo(X) + (Foo(Y) + Foo(Z)) (или просто переставить слагаемые).
У операторов ++ и -- порядок безусловно надо учитывать.
$ erl +pc unicode
1> "мама" ++ "мыла" ++ "раму".
"мамамылараму"
2> "мама" ++ "раму" ++ "мыла".
"мамарамумыла"
3> "раму" -- "мыла" -- "мама".
"раму"
4> "раму" -- "мама" -- "мыла".
"ру"
Рейтинг операторов (сначала идут обладатели высокого приоритета):
:#+ (унарный), - (унарный), bnot, not/, *, div, rem, band, and (у всех левая ассоциативность)+, -, bor, bxor, bsl, bsr, or, xor (у всех левая ассоциативность)++, -- (у обоих правая ассоциативность)==, /=, =<, <, >=, >, =:=, =/=andalsoorelse=, ! (правая ассоциативность)catchCopyright © 2024 Алексей Карманов