Ова е список на оператори во C и C++ програмските јазици. Сите опеартори на листата постојат во C++; Тртата колона ги покажува опраторите кои постојат и во C. Трба да се напомене дека C не поддржува преоптоварување на операторот.
Следниве оператори се почетни точки во двата јазици (кога нема преоптеретување на операторот) &&, ||, ?:, и , ( опраторот запирка).
C++ ги содржи и операторите за претворање const_cast, static_cast, dynamic_cast, и reinterpret_cast кои ги нема во табелата поради концизност. Форматирањето на овие оператори значи дека тие немаат поголема важност во приоритетното ниво.
Оние оператори кои се во C , со исклучок на запирка и стрелка операторите, се и во Java, Perl, C#, и PHP со истиот приоритет, асоцијативност и семантика со еден исклучок: асоцијативноста на троенторниот опаератор во PHP е од лево кон десно.
Табела
Аритметички оператори
|
Име на операторот
|
Синтакса
|
Преоптеретување
|
Во C
|
Пример
|
единичен + |
+a |
да |
да |
?
|
Собирање |
a + b |
да |
да |
Type1 operator+(const Type1& a, const Type2& b);
|
Претставка за растање |
++a |
да |
да |
Type1& operator++ ();
|
Наставка за растење |
a++ |
да |
да |
Type1 operator++ (int);
// the int argument is just here to give a type signature which differ from the prefix increment
|
Задача на собирање |
a += b |
да |
да |
a = a + b
|
Единечен -(негација) |
-a |
да |
да |
?
|
Одземање (разлика) |
a - b |
да |
да |
?
|
Префикc за намалување |
--a |
да |
да |
?
|
Наставка за намалување |
a-- |
да |
да |
?
|
Задача со одземање |
a -= b |
да |
да |
?
|
Множење(производ) |
a * b |
да |
да |
?
|
Задача со множење |
a *= b |
да |
да |
?
|
Делење (количник) |
a / b |
да |
да |
?
|
Задача со делење |
a /= b |
да |
да |
?
|
Модули |
a % b |
да |
да |
?
|
Задача со мудули |
a %= b |
да |
да |
?
|
Оператори за споредување
|
Име на операторот
|
Синтакса
|
Преоптеретување
|
Во C
|
Пример
|
Помало |
a < b |
да |
да |
?
|
Помало или еднакво |
a <= b |
да |
да |
?
|
Поголемо |
a > b |
да |
да |
?
|
Поголемо или еднакво |
a >= b |
да |
да |
?
|
Нееднакво |
a != b |
да |
да |
?
|
Еднакво на |
a == b |
да |
да |
?
|
Логички оператори
|
Име на операторот
|
Синтакса
|
Преоптеретување
|
Во C
|
Пример
|
Логичка негација |
!a |
да |
да |
?
|
Логичко И |
a && b |
да |
да |
?
|
Логички ИЛИ |
a || b |
да |
да |
?
|
Битови оператори
|
Име на операторот
|
Синтакса
|
Преоптеретување
|
Во C
|
Пример
|
Битово лево поместување |
a << b |
да |
да |
?
|
Задача со битово лево поместување |
a <<= b |
да |
да |
?
|
Битово десно поместување |
a >> b |
да |
да |
?
|
Задача со битово десно поместување |
a >>= b |
да |
да |
?
|
Битово едно дополнување |
~a |
да |
да |
?
|
Битово И |
a & b |
да |
да |
?
|
Задача со битово И |
a &= b |
да |
да |
?
|
Битово ИЛИ |
a | b |
да |
да |
?
|
Задача со битово ИЛИ |
a |= b |
да |
да |
?
|
Битово XOR |
a ^ b |
да |
да |
?
|
Задача со битов XOR |
a ^= b |
да |
да |
?
|
Други оператори
|
Име на операторот
|
Синтакса
|
Преоптеретување
|
Во C
|
Пример
|
Основна задача |
a = b |
да |
да |
Type1& operator= (const Type1& b);
|
Повикување на функција |
a() |
да |
да |
?
|
Низа со индекс |
a[b] |
да |
да |
?
|
Indirection |
*a |
да |
да |
?
|
Мемориска адреса на знакот |
&a |
да |
да |
?
|
Член со покажувач |
a->b |
да |
да |
?
|
Член |
a.b |
не |
да |
?
|
Врска помеѓу покажувач и член |
a->*b |
да |
не |
?
|
Врска меѓу покажувачот и референтниот член |
a.*b |
не |
не |
?
|
Доделува |
(type) a |
да |
да |
?
|
Запирка |
a , b |
да |
да |
?
|
Троен услов |
a ? b : c |
не |
да |
?
|
Просторна резолуција |
a::b |
не |
не |
?
|
Покажувач на член |
a::*b |
не |
не |
?
|
Големина на |
sizeof a
sizeof(type) |
не |
да |
?
|
Индитефукување на тип на променлива |
typeid(a)
typeid(type) |
не |
не |
?
|
Доделување на нов тип на променлива |
new type |
да |
не |
?
|
Доделување на нов тип на низа |
new type[n] |
да |
не |
?
|
Бришење на типот на променлива |
delete a |
да |
не |
?
|
Бришење на типот на низа |
delete[] a |
да |
не |
?
|
Приоритет на операторите
Во продолжение има табела која ги содржи приоритетите и асоцијативноста на сите оператори во C++ и C програмските јазици (кога операторите исто така постојат во Java, Perl, PHP и многу други понови јазици приоритет е ист како дадениот). Операторите се наведени според опаѓањето на приоритетот. Опаѓањето се однесува на приоритетот на вреднувањето. Имајќи го предвид компјутерскиот израз, оператор кој е подреден во некоја низа ќе биде вреднуван пред било кој оператор кој е подреден во подалечна низа под него. Операторите кои се во иста ќелија ( може неколку низи од оператори да бидат подредени во ќелија ) се вреднувани со исто ниво, во дадена насока. Приорeтните оператори не се зафатени со преоптоварување.
Синтаксата на изразите во C и C++ е прецизирана _наведена_ од граматика која не зависи од контекстот.
Оператор
|
Опис
|
Асоцијативност
|
::
|
Просторна резолуција (Само во C++)
|
Од лево кон десно
|
++ --
|
зголемување и намалување на наставка
|
()
|
Повикување на функција
|
[]
|
Низа со
|
.
|
Селекција на елементи преку референца
|
->
|
Селекција на елементи преку покажувач
|
typeid()
|
Run-time type информација (Само во C++)
|
const_cast
|
Type cast (Само во C++)
|
dynamic_cast
|
Type cast (Само во C++)
|
reinterpret_cast
|
Type cast (Само во C++)
|
static_cast
|
Type cast (Само во C++)
|
++ --
|
Зголемување и намалување на претставката
|
Од лево кон десно
|
+ -
|
Единечен плус и минус
|
! ~
|
Логичко НЕ и битово НЕ
|
(type)
|
Type cast
|
*
|
Indirection (dereference)
|
&
|
Адреса
|
sizeof
|
Големина на
|
new new[]
|
Распределба на динамичка меморија (Само во C++)
|
delete delete[]
|
Дераспределба на динамичката меморија(Само во C++)
|
.* ->*
|
Покажувач на член ( Само во C++)
|
Од лево кон десно
|
* / %
|
Множење, делење и модули (остаток)
|
+ -
|
Собирање и одземање
|
<< >>
|
Битово лево поместување и десно поместување
|
< <=
|
Функционално „Помало“ и „Помало или еднкаво“
|
> >=
|
Функционално „Поголемо“ и „Поголемо или еднакво“
|
== !=
|
Функционално „Еднакво“ и „Нееднакво“
|
&
|
Битово И
|
^
|
Битово XOR (исклучиво или)
|
|
|
Битово ИЛИ ()
|
&&
|
Логичко ИЛИ
|
||
|
Логичко И
|
c ? t : f
|
Троентроен conditional (see ?:)
|
Од десно кон лево (Не е достапен за throw )
|
=
|
Директна задача
|
+= -=
|
Задача со збир и разлика
|
*= /= %=
|
Задача со производ, количник и остаток
|
<<= >>=
|
Задача со битово лево поместување и десно поместување
|
&= ^= |=
|
Задача со битово И, XOR, и ИЛИ
|
throw
|
Throw operator (exceptions throwing,Само во Ц++)
|
,
|
Запирка
|
Од лево кон десно
|
Синоми на операторите во C++
C++ дефинира клучни зборови кои заменуваат низа симболи кои функционираат како оператори: и (&&), адреса (&), и_еднакво (&=), или (||), bitor (|), или_еднакво (|=), xor (^), xor_еднакво (^=), не (!), нееднакво(!=), compl (~). Овие се расчленувани исто како и нивните симболични еквиваленти и можат да се користат на местото од симболот кој го заменуваат. Интерпукцијата е заменета, а не операторите. На пример адреса може да ги замени двата битови оператора И и мемориска адреса на операторот.
Сите оператори за споредување(Во табелата погоре) враќаат bool(точно-неточно).
bool a;
int b = 1;
int c = 2;
a = b == c;
Ова ќе работи бидејќи == враќа boolean, и никогаш не бара да биде внатре во условна зависносложена реченица или нешто слично.
a=b==c; е исто кратенка за:
bool a;
int b = <Some Number Here>;
int c = <Some Number Here>;
if(b == c)
a = true;
else
a = false;
Дополнителни врски