Чрез операторите в програмните езици се осъществява обработката на данни. Всеки оператор има строго определена функционалност, в зависимост от конкретния програмен език, към който принадлежи. Операторите се обозначават със символи (напр. !, %, +, || и др.) и се характеризират с: позиция спрямо аргументите си (инфиксен или постфиксен), приоритет и асоциативност.
Видове оператори
Операторите са обособени в отделни категории: според естеството на извършваните от тях операции и според броя аргументи, които приемат.
Според естеството на извършваните операции
- аритметични – извършват математически операции (като събиране, изваждане, умножение, деление)
- логически – извършват булеви операции върху данните и връщат булев резултат
- побитови – работят на принципа на логическите оператори, но върху двоичното представяне на числата.
- за сравнение – извършват операции за сравнение на две или повече операнди
- за присвояване – присвояват стойност на дадена променлива
Според броя на аргументите
- едноаргументни (на английски: 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
Източници
Вижте също