Опера́ция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий.

Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми; они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов. Терминология, однако, несколько отличается от языка к языку.

Операция и инструкция Английское слово operator, соответствующее термину «операция», иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement. Путаница усугубилась тем, что в C присваивание и инкремент/декремент являются и операторами, и операциями.

Операция и функция Фактически, операция — это та же функция, но записываемая особым образом. По этой причине логично иметь возможность определять операции для произвольных типов таким же образом, как и методы — чтобы можно было работать с ними точно так же, как и с элементарными типами. Эта возможность называется «перегрузка операций» и присутствует в большинстве языков 4—5 поколений. В таких языках транслятор фактически подставляет вместо выполнения операции вызов соответствующей ей функции.

Типы операций Операции делятся по количеству принимаемых аргументов на: унарные — один аргумент (отрицание, унарный минус); бинарные — два аргумента (сложение, вычитание, умножение и т. д.); тернарные — три аргумента («условие ? выражение1 : выражение2»).

Синтаксис операций Поскольку операции аналогичны по записи алгебраическим выражениям, для них, как и для последних, существует 3 варианта синтаксиса: префиксная (польская) (+ab) нотация; инфиксная (a+b) нотация; постфиксная (обратная польская) (ab+) нотация.

Для бинарных и тернарных (с 3 операндами) операций в подавляющем большинстве случаев используют инфиксную нотацию — по той простой причине, что она принята в математике и наиболее привычна большинству людей. Для унарных операций инфиксной нотации не существует, и, как правило, используется префиксная.

Список типовых операций Операции обычно переходят из языков в родственные — например, операции языка С присутствуют в языках C++, Java, JavaScript и многих других.

Знак Выполняемая операция Языки программирования a = b или a := b присваивание практически все Арифметические a + b сложение аргументов практически все a - b вычитание практически все -a изменение знака практически все a / b, a div b деление практически все a % b, a mod b остаток от деления (деление по модулю) практически все a++a-- увеличение на 1 с присваиванием (инкремент)уменьшение на 1 с присваиванием (декремент)С, Java, PHP a ^ b или a ^^ b или a ** b возведение в степень BASIC, Fortran, Ruby, Python, Haskell (все 3) Логические a & b, или a && b, или a and b конъюнкция (логическое умножение) практически все a | b, или a || b, или a or b дизъюнкция (логическое сложение)~a, или !a, или not a инверсия (логическое отрицание) a = b или a == b a <> b или a /= b или a != b проверка на равенство проверка на неравенствоa > b, a >= b a < b, a <= b больше, больше или равно меньше, меньше или равно a ? b : c тернарная условная операция (если условие a истинно, всё выражение равно b, иначе c) С, C++, Java, PHP Строковыеa + b или a & b или a.b (PHP) или a..b (Lua) или a ++ b (Haskell) конкатенация (слияние) практически всеБитовыеa & b, a and b (Pascal, Kotlin), a /\ b (Prolog), a .&. b (Haskell)Побитовая конъюнкцияC/C++, Java, C#, Ruby, Python, Pascal, Kotlin, Prolog, Haskella | b, a or b (Pascal, Kotlin), a \/ b (Prolog), a .|. (Haskell)Побитовая дизъюнкция~a, not a (Pascal), inv a (Kotlin), \a (Prolog)Побитовое отрицаниеC/C++, Java, C#, Ruby, Python, Pascal, Kotlin, Prologa ^ b, xor (Pascal, Kotlin)Исключающее ИЛИC/C++, Java, C#, Ruby, Python, Pascal, Kotlina << b, a shl b (Pascal, Kotlin)

a >> b, a shr b (Pascal, Kotlin)Побитовый сдвиг влево

Побитовый сдвиг вправо

См. также Логическое выражение Битовые операции Операнд

Примечания