Направо към съдържанието

Оператор (програмиране)

от Уикипедия, свободната енциклопедия
Вижте пояснителната страница за други значения на Оператор.

Чрез операторите в програмните езици се осъществява обработката на данни. Всеки оператор има строго определена функционалност, в зависимост от конкретния програмен език, към който принадлежи. Операторите се обозначават със символи (напр. !, %, +, || и др.) и се характеризират с: позиция спрямо аргументите си (инфиксен или постфиксен), приоритет и асоциативност.

Операторите са обособени в отделни категории: според естеството на извършваните от тях операции и според броя аргументи, които приемат.

Според естеството на извършваните операции

[редактиране | редактиране на кода]
  • аритметични – извършват математически операции (като събиране, изваждане, умножение, деление)
  • логически – извършват булеви операции върху данните и връщат булев резултат
  • побитови – работят на принципа на логическите оператори, но върху двоичното представяне на числата.
  • за сравнение – извършват операции за сравнение на две или повече операнди
  • за присвояване – присвояват стойност на дадена променлива

Според броя на аргументите

[редактиране | редактиране на кода]
  • едноаргументни (на английски: unary) – приема един аргумент
  • двуаргументни (на английски: binary) – приема два аргумента
  • триаргументни (на английски: ternary) – приема три аргумента

Предефиниране на оператори

[редактиране | редактиране на кода]

Предефинирането на оператори в обектно-ориентираното програмиране позволява дефиниране на различна функционалност на вече съществуващи оператори, в зависимост от типовете, върху които се използват. Те могат да бъдат предефинирани както от езика (напр. в C# и Java аритметичният оператор + може да означава събиране на числа или конкатениране на низове), така и от програмиста (напр. в C++).

Операторите в различните програмни езици

[редактиране | редактиране на кода]
C# Java C++ JavaScript PHP
Аритметични
Отрицание -
Събиране + + + + +
Изваждане -
Умножение * * * * *
Деление / / / / /
Деление по модул % % % % %
Инкрементиране ++ ++ ++ ++ ++
Декрементиране -- -- -- -- --
За присвояване
Присвояване = = = = =
Прибавяне и присвояване += += += += +=
Изваждане и присвояване -= -= -= -= -=
Умножение и присвояване *= *= *= *= *=
Деление и присвояване /= /= /= /= /=
Деление по модул и присвояване %= %= %= %= %=
Побитово „И“ и присвояване &= &= &= &= &=
Побитово „ИЛИ“ и присвояване |= |= |= |= |=
Изключващо „ИЛИ“ и присвояване ^= ^= ^= ^= ^=
Отместване вляво и присвояване <<= <<= <<= <<= <<=
Отместване вдясно и присвояване >>= >>= >>= >>>= >>=
Отместване вдясно, запълване с нули и присвояване >>>= >>>=
За сравняване
Равно == == == == ==
Идентично === ===
Различно != != != != !=, <>
Неидентично !== !==
По-малко < < < < <
По-голямо > > > > >
По-малко или равно <= <= <= <= <=
По-голямо или равно >= >= >= >= >=
Логически
Логическо „И“ && && && && and, &&
Логическо „ИЛИ“ || || || || or, ||
Изключвщо „ИЛИ“ ^ ^ xor
Логическо отрицание ! ! ! ! !
Побитови
Побитово „И“ & & & & &
Побитово „ИЛИ“ | | | | |
Изключващо „ИЛИ“ ^ ^ ^ ^ ^
Побитово отрицание ~ ~ ~ ~ ~
Побитово отместване вляво << << << << <<
Побитово отместване вдясно >> >> >> >> >>
Побитово отместване вдясно и запълване с нули >>> >>>
Условни ?:,?? ?: ?: ?: ?:,??
За работа с типове (type), as, is, typeof, sizeof (type), instanceof (type), sizeof(), typeid() typeof instanceof
Оператори за низове
Съединяване + + + .
Съединяване и присвояване += += += .=
Оператори за масиви +, ==, ===, !=, <>, !==

Аритметични оператори

[редактиране | редактиране на кода]
        int a = 2;
        int b = 3;
        int result;

        result = a + b;  // в променливата result ще се запази сумата на a и b
        result = a  b;  // в променливата result ще се запази разликата на a и b
        result = a * b;  // в променливата result ще се запази произведението на a и b
        result = a / b;  // в променливата result ще се запази частното на a и b
        result = a % b;  // в променливата result ще се запази остатъкът от делението на a и b
        result = a++; //в променливата result ще се запази стойността на променливата a, увеличена с 1
        result = a--;  // в променливата result ще се запази стойността на променливата a, намалена с 1

Логически оператори

[редактиране | редактиране на кода]
        bool a = true;
        bool b = false;

        Console.WriteLine(a && b);  // На конзолата ще се изпише False
        Console.WriteLine(a || b);  // На конзолата ще се изпише True
        Console.WriteLine(!b);  // На конзолата ще се изпише True

Побитови оператори

[редактиране | редактиране на кода]
        int a = 3;                // 0000 0011 = 3
        int b = 5;                // 0000 0101 = 5

        Console.WriteLine(a | b); // 0000 0111 = 7
        Console.WriteLine(a & b); // 0000 0001 = 1
        Console.WriteLine(a ^ b); // 0000 0110 = 6
        Console.WriteLine(~a & b); // 0000 0100 = 4
        Console.WriteLine(a << 1); // 0000 0110 = 6
        Console.WriteLine(a << 2); // 0000 1100 = 12
        Console.WriteLine(a >> 1); // 0000 0001 = 1

Оператори за сравнение

[редактиране | редактиране на кода]
        int x = 10, y = 5;
        Console.WriteLine(x > y :  + (x > y)); // true
        Console.WriteLine(x < y :  + (x < y)); // false
        Console.WriteLine(x >= y :  + (x >= y)); // true
        Console.WriteLine(x <= y :  + (x <= y)); // false
        Console.WriteLine(x == y :  + (x == y)); // false
        Console.WriteLine(x != y :  + (x != y)); // true
        int a = 6;
        int b = 4;
        Console.WriteLine(a > b ? a>b : b<=a); // a>b

Аритметични оператори

[редактиране | редактиране на кода]
       int squarePerimeter = 17;
       double squareSide = squarePerimeter / 4.0;
       double squareArea = squareSide * squareSide;
       System.out.println(squareSide); // 4.25
       System.out.println(squareArea); // 18.0625

       int a = 5;
       int b = 4;
       System.out.println(a + b);      // 9
       System.out.println(a + b++);    // 9
       System.out.println(a + b);      // 10
       System.out.println(a + (++b));  // 11
       System.out.println(a + b);      // 11
       System.out.println(14 / a);     // 2
       System.out.println(14 % a);     // 4

Логически оператори

[редактиране | редактиране на кода]
        boolean a = true;
        boolean b = false;
        System.out.println(a && b);         // false
        System.out.println(a || b);         // true
        System.out.println(!b);             // true
        System.out.println(b || true);      // true
        System.out.println((5>7) ^ (a==b)); // false

Побитови оператори

[редактиране | редактиране на кода]
      short a = 3;                // 0000 0011 = 3
      short b = 5;                // 0000 0101 = 5

      System.out.println(a | b); // 0000 0111 = 7
      System.out.println(a & b); // 0000 0001 = 1
      System.out.println(a ^ b); // 0000 0110 = 6
      System.out.println(~a & b); // 0000 0100 = 4
      System.out.println(a << 1); // 0000 0110 = 6
      System.out.println(a << 2); // 0000 1100 = 12
      System.out.println(a >> 1); // 0000 0001 = 1

Оператори за сравнение

[редактиране | редактиране на кода]
int x = 10, y = 5;
       System.out.println(x > y :  + (x > y)); // true
       System.out.println(x < y :  + (x < y)); // false
       System.out.println(x >= y :  + (x >= y)); // true
       System.out.println(x <= y :  + (x <= y)); // false
       System.out.println(x == y :  + (x == y)); // false
       System.out.println(x != y :  + (x != y)); // true
       int a = 6;
       int b = 4;
       System.out.println(a > b ? a>b : b<=a); // a>b