Прејди на содржината

Оператори во 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дада?
Битово XORa ^ bдада?
Задача со битов XORa ^= 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;

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

[уреди | уреди извор]