Оператори во C и C++
Оваа статија не наведува никакви извори. (ноември 2009) Ве молиме помогнете со тоа што ќе додадете наводи до веродостојни извори. Непроверливата содржина може да биде изменета или отстранета. |
Ова е список на оператори во 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);
|
| Задача на собирање | 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;