Оператори во 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 asizeof(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;

 Дополнителни врски 
 Basic types & Operators
 Prefix vs. postfix operators in C and C++

Категорија:Програмски јазици
Категорија:C++