Оператори во C и C++
|
|
Оваа статија не наведува никакви извори. (ноември 2009) Ве молиме помогнете со тоа што ќе додадете наводи до веродостојни извори. Непроверливата содржина може да биде изменета или отстранета. |
Ова е листа на оператори во C и C++ програмските јазици. Сите опеартори на листата постојат во C++; Тртата колона ги покажува опраторите кои постојат и во C. Трба да се напомене дека C не подржува преоптoварување на операторот.
Следниве оператори се почетни точки во двата јазици (кога нема преоптеретување на операторот) &&, ||, ?:, и , ( опраторот запирка). 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);
|
| Задача на собирање | 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 |
да | да | ? |
Bitwise оператори[уреди] |
||||
| Име на операторот | Синтакса | Преоптеретување | Во C | Пример |
| Bitwise лево шифтирање | a << b |
да | да | ? |
| Задача со Bitwise лево шифтирање | a <<= b |
да | да | ? |
| Bitwise десно шифтирање | a >> b |
да | да | ? |
| Задача со Bitwise десно шифтирање | a >>= b |
да | да | ? |
| Bitwise едно дополнување | ~a |
да | да | ? |
| Bitwise И | a & b |
да | да | ? |
| Задача со Bitwise И | a &= b |
да | да | ? |
| Bitwise ИЛИ | a | b |
да | да | ? |
| Задача со Bitwise ИЛИ | a |= b |
да | да | ? |
| Bitwise XOR | a ^ b |
да | да | ? |
| Задача со bitwise 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 |
да | не | ? |
Приоритет на операторите[уреди]
Во продолжение има тaбела која ги содржи приоритетите и асоцијативноста на сите оператори во C++ и C програмските јазици (кога операторите исто така постојат во Java, Perl, PHP и многу други понови јазици приоритет е ист како дадениот). Операторите се наведени според опаѓањето на приоритетот. Опаѓањето се однесува на приоритетот на вреднувањето. Имајќи го предвид компјутерскиот израз, оператор кој е подреден во некоја низа ќе биде вреднуван пред било кој оператор кој е подреден во подалечна низа под него. Операторите кои се во иста ќелија ( може неколку низи од оператори да бидат подредени во ќелија ) се вреднувани со исто ниво, во дадена насока. Приoр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++) | |
++ -- |
Зголемување и намалување на префиксот | Од лево кон десно |
+ - |
Единечен плус и минус | |
! ~ |
Логичко НЕ and bitwise НЕ | |
(type) |
Type cast | |
* |
Indirection (dereference) | |
& |
Адреса | |
sizeof |
Големина на | |
new new[] |
Распределба на динамичка меморија (Само во C++) | |
delete delete[] |
Дераспределба на динамичката меморија(Само во C++) | |
.* ->* |
Покажувач на член ( Само во C++) | Од лево кон десно |
* / % |
Множење, делење и модули (остаток) | |
+ - |
Собирање и одземање | |
<< >> |
Bitwise лево шифтирање и десно шифтирање | |
< <= |
Функционално „Помало“ и „Помало или еднкаво“ | |
> >= |
Функционално „Поголемо“ и „Поголемо или еднакво“ | |
== != |
Функционално „Еднакво“ и „Нееднакво“ | |
& |
Bitwise И | |
^ |
Bitwise XOR (exclusive or) | |
| |
Bitwise ИЛИ () | |
&& |
Логичко ИЛИ | |
|| |
Логичко И | |
c ? t : f |
Троентроен conditional (see ?:) | Од десно кон лево (Не е достапен за throw) |
= |
Директна задача | |
+= -= |
Задача со збир и разлика | |
*= /= %= |
Задача со продукт, количник и остаток | |
<<= >>= |
Задача со bitwise лево шифтирање и десно шифтирање | |
&= ^= |= |
Задача со bitwise И, XOR, и ИЛИ | |
throw |
Throw operator (exceptions throwing,Само во Ц++) | |
, |
Запирка | Од лево кон десно |
Синоми на операторите во C++[уреди]
C++ дефинира клучни зборови кои заменуваат низа симболи кои функционираат како оператори: и (&&), адреса (&), и_еднакво (&=), или (||), bitor (|), или_еднакво (|=), xor (^), xor_еднакво (^=), не (!), нееднакво(!=), compl (~). Oвие се расчленувани исто како и нивните симболични еквиваленти и можат да се користат на местото од симболот кој го заменуваат. Интерпукцијата е заменета, а не операторите. На пример адреса може да ги замени двата bitwise И операторот и Мемориска адреса на операторот.
Сите оператори за споредување(Во табелата погоре) враќаат 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;