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

Ова е список на оператори во C и C++ програмските јазици. Сите опеартори на листата постојат во C++; Тртата колона ги покажува опраторите кои постојат и во C. Трба да се напомене дека C не поддржува преоптоварување на операторот.
Следниве оператори се почетни точки во двата јазици (кога нема преоптоварување на операторот) &&, ||, ?:, и , ( опраторот запирка).
C++ ги содржи и операторите за претворање const_cast, static_cast, dynamic_cast, и reinterpret_cast кои ги нема во табелата поради концизност. Форматирањето на овие оператори значи дека тие немаат поголема важност во приоритетното ниво.
Оние оператори кои се во C , со исклучок на запирка и стрелка операторите, се и во Java, Perl, C#, и PHP со истиот приоритет, асоцијативност и семантика со еден исклучок: асоцијативноста на троенторниот опаератор во PHP е од лево кон десно.
1 Табела
1.1 Аритметички оператори
Име на операторот, Синтакса, Преоптоварување, Во C, Пример
единичен +, <code>+a</code>, да, да, ?
Собирање, <code>a + b</code>, да, да, <code>Type1 operator+(const Type1& a, const Type2& b);</code>
Претставка за растање, <code>++a</code>, да, да, <code>Type1& operator++;</code>
Наставка за растење, <code>a++</code>, да, да, <code>Type1 operator++ (int);
Задача на собирање, <code>a += b</code>, да, да, + b
Единечен -(негација), <code>-a</code>, да, да, ?
Одземање (разлика), <code>a - b</code>, да, да, ?
Префикc за намалување, <code>--a</code>, да, да, ?
Наставка за намалување, <code>a--</code>, да, да, ?
Задача со одземање, <code>a -= b</code>, да, да, ?
Множење(производ), <code>a * b</code>, да, да, ?
Задача со множење, <code>a *= b</code>, да, да, ?
Делење (количник), <code>a / b</code>, да, да, ?
Задача со делење, <code>a /= b</code>, да, да, ?
Модули, <code>a % b</code>, да, да, ?
Задача со мудули, <code>a %= b</code>, да, да, ?
1.2 Оператори за споредување
Име на операторот, Синтакса, Преоптоварување, Во C, Пример
Помало, <code>a &lt; b</code>, да, да, ?
Помало или еднакво, <code>a &lt;= b</code>, да, да, ?
Поголемо, <code>a &gt; b</code>, да, да, ?
Поголемо или еднакво, <code>a &gt;= b</code>, да, да, ?
Нееднакво, <code>a != b</code>, да, да, ?
Еднакво на, <code>a
== b</code> || да || да || ?
1.3 Логички оператори
Име на операторот, Синтакса, Преоптоварување, Во C, Пример
Логичка негација, <code>!a</code>, да, да, ?
Логичко И, <code>a &amp;&amp; b</code>, да, да, ?
Логички ИЛИ, <code>a , b</code>, да, да, ?
1.4 Битови оператори
Име на операторот, Синтакса, Преоптоварување, Во C, Пример
Битово лево поместување, <code>a &lt;&lt; b</code>, да, да, ?
Задача со битово лево поместување, <code>a &lt;&lt;= b</code>, да, да, ?
Битово десно поместување, <code>a &gt;&gt; b</code>, да, да, ?
Задача со битово десно поместување, <code>a &gt;&gt;= b</code>, да, да, ?
Битово едно дополнување, <code>~a</code>, да, да, ?
Битово И, <code>a &amp; b</code>, да, да, ?
Задача со битово И, <code>a &amp;= b</code>, да, да, ?
Битово ИЛИ, <code>a b</code>, да, да, ?
Задача со битово ИЛИ, <code>a = b</code>, да, да, ?
Битово XOR, <code>a ^ b</code>, да, да, ?
Задача со битов XOR, <code>a ^= b</code>, да, да, ?
1.5 Други оператори
Име на операторот, Синтакса, Преоптоварување, Во C, Пример
Основна задача, <code>, да, да, <code>Type1& Type1& b);</code>
Повикување на функција, <code>a()</code>, да, да, ?
Низа со индекс, <code>a[b]</code>, да, да, ?
Indirection, <code>*a</code>, да, да, ?
Мемориска адреса на знакот, <code>&amp;a</code>, да, да, ?
Член со покажувач, <code>a-&gt;b</code>, да, да, ?
Член, <code>a.b</code>, не, да, ?
Врска помеѓу покажувач и член, <code>a->*b</code>, да, не, ?
Врска меѓу покажувачот и референтниот член, <code>a.*b</code>, не, не, ?
Доделува, <code>(''type'') a</code>, да, да, ?
Запирка, <code>a , b</code>, да, да, ?
Троен услов, <code>a ? b : c</code>, не, да, ?
Просторна резолуција, <code>a::b</code>, не, не, ?
Покажувач на член, <code>a::*b</code>, не, не, ?
Големина на, <code>sizeof a</code><code>sizeof(''type'')</code>, не, да, ?
Индитефукување на тип на променлива, <code>typeid(a)</code><code>typeid(''type'')</code>, не, не, ?
Доделување на нов тип на променлива, <code>new ''type''</code>, да, не, ?
Доделување на нов тип на низа, <code>new ''type''[n]</code>, да, не, ?
Бришење на типот на променлива, <code>delete a</code>, да, не, ?
Бришење на типот на низа, <code>delete[] a</code>, да, не, ?
2 Приоритет на операторите
Во продолжение има табела која ги содржи приоритетите и асоцијативноста на сите оператори во C++ и C програмските јазици (кога операторите исто така постојат во Java, Perl, PHP и многу други понови јазици приоритет е ист како дадениот). Операторите се наведени според опаѓањето на приоритетот. Опаѓањето се однесува на приоритетот на вреднувањето. Имајќи го предвид компјутерскиот израз, оператор кој е подреден во некоја низа ќе биде вреднуван пред било кој оператор кој е подреден во подалечна низа под него. Операторите кои се во иста ќелија ( може неколку низи од оператори да бидат подредени во ќелија ) се вреднувани со исто ниво, во дадена насока. Приорeтните оператори не се зафатени со преоптоварување.
Синтаксата на изразите во C и C++ е прецизирана _наведена_ од граматика која не зависи од контекстот.
Оператор, Опис, Асоцијативност
<code>::</code>, Просторна резолуција (Само во C++), Од лево кон десно
<code>++</code><code>--</code>, зголемување и намалување на наставка
<code>()</code>, Повикување на функција
<code>[]</code>, Низа со
<code>.</code>, Селекција на елементи преку референца
<code>-&gt;</code>, Селекција на елементи преку покажувач
<code>typeid()</code>, Run-time type информација (Само во C++)
<code>const_cast</code>, Type cast (Само во C++)
<code>dynamic_cast</code>, Type cast (Само во C++)
<code>reinterpret_cast</code>, Type cast (Само во C++)
<code>static_cast</code>, Type cast (Само во C++)
<code>++</code><code>--</code>, Зголемување и намалување на претставката, Од лево кон десно
<code>+</code><code>-</code>, Единечен плус и минус
<code>!</code><code>~</code>, Логичко НЕ и битово НЕ
<code>(''type'')</code>, Type cast
<code>*</code>, Indirection (dereference)
<code>&</code>, Адреса
<code>sizeof</code>, Големина на
<code>new</code><code>new[]</code>, Распределба на динамичка меморија (Само во C++)
<code>delete</code><code>delete[]</code>, Дераспределба на динамичката меморија(Само во C++)
<code>.*</code><code>->*</code>, Покажувач на член ( Само во C++), Од лево кон десно
<code>*</code><code>/</code><code>%</code>, Множење, делење и модули (остаток)
<code>+</code><code>-</code>, Собирање и одземање
<code>&lt;&lt;</code><code>&gt;&gt;</code>, Битово лево поместување и десно поместување
<code>&lt;</code><code>&lt;=</code>, Функционално „Помало“ и „Помало или еднкаво“
<code>&gt;</code><code>&gt;=</code>, Функционално „Поголемо“ и „Поголемо или еднакво“
<code>
==</code><code>!=</code>
| Функционално „Еднакво“ и „Нееднакво“
<code>&amp;</code>, Битово И
<code>^</code>, Битово XOR (исклучиво или)
<code> </code>, Битово ИЛИ
<code>&amp;&amp;</code>, Логичко ИЛИ
<code>, </code>, Логичко И
<code>''c'' ? ''t'' : ''f''</code>, Троентроен conditional (see ?:), Од десно кон лево (Не е достапен за <code>throw</code>)
<code>=</code>, Директна задача
<code>+=</code><code>-=</code>, Задача со збир и разлика
<code>*=</code><code>/=</code><code>%=</code>, Задача со производ, количник и остаток
<code>&lt;&lt;=</code><code>&gt;&gt;=</code>, Задача со битово лево поместување и десно поместување
<code>&amp;=</code><code>^=</code><code> =</code>, Задача со битово И, XOR, и ИЛИ
<code>throw</code>, Throw operator (exceptions throwing,Само во Ц++)
<code>,</code>, Запирка, Од лево кон десно
2.1 Синоми на операторите во 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;
3 Дополнителни врски
**