Оператори во C и C++

Ова е список на оператори во 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;

Дополнителни врски

уреди