c operators types
Kompletní studie operátorů v C ++ s příklady:
V tomhle Intenzivní řada školení C ++, o různých koncepcích v C ++, jako jsou proměnné, třídy úložiště, kvalifikátory typů atd., jsme se dozvěděli v našich dřívějších cvičeních. Také jsme zjistili, jak můžeme tyto proměnné upravit.
K provedení těchto úprav potřebujeme provádět operace s těmito proměnnými a konstantami a k provádění těchto operací používáme operátory.
Operátory jsou symboly, které působí na proměnné nebo jiné entity, které se nazývají operandy, a provádějí matematické nebo logické operace, aby upravily své hodnoty a odpovídajícím způsobem vytvořily výsledky.
Co se naučíte:
Operátoři v C ++
Operátoři tvoří základní základ jakéhokoli programovacího jazyka. Bez operátorů nemůžeme upravovat nebo manipulovat s entitami programovacích jazyků, a proto nemůžeme dosáhnout požadovaných výsledků. C ++ je velmi bohatý na integrované operátory, o kterých si podrobně povíme v tomto tutoriálu.
V C ++ jsou většina operátorů binární operátory, tj. Tyto operátory vyžadují k provedení operace dva operandy. Několik operátorů, jako je operátor ++ (přírůstek), je unární operátor, což znamená, že pracují pouze na jednom operandu.
V jazyce C ++ existuje také ternární operátor s názvem Podmíněný operátor, který přebírá tři operandy. O tom se podrobně dozvíme v pozdější části tutoriálu.
Typy operátorů v C ++
Operátoři v C ++ jsou klasifikováni tak, jak je uvedeno níže:
Podívejme se podrobně na každý typ operátoru C ++ !!
Aritmetické operátory
Aritmetické operátory se používají k provádění základních matematických operací s operandy.
C ++ podporuje následující aritmetické operace:
Operátor | Binární / unární | Popis |
---|---|---|
- | Unární | Decrement operator - sníží hodnotu operandu o 1 |
+ | Binární | Přidání dvou operandů |
- | Binární | Odečtení dvou operandů |
* | Binární | Násobení dvou operandů |
/ | Binární | Rozdělení dvou operandů |
% | Binární | Operátor modulu - výsledkem je zbytek dělení |
++ | Unární | Přírůstkový operátor - zvyšuje hodnotu operandu o 1 |
Níže uvedený příklad ukazuje prvních pět aritmetických operátorů v C ++
#include #include using namespace std; int main() { int op1=3,op2=4; float op3=10.1,op4=5.4; cout<<'Operands are op1 = '< Můžeme tomu lépe porozumět pomocí následujícího příkladu. #include #include using namespace std; int main() { int x=4,y; y = ++x; cout<<'PreIncrement:Value of x = '<Logičtí operátoři Logické operátory se používají k vyhodnocení kombinace podmínek / omezení k získání výsledné hodnoty. Výsledkem vyhodnocení logického výrazu je logická hodnota, která je buď true, nebo false.
C ++ podporuje následující logické operátory:
Operátor Popis 7 L-> R <<
>> Bitový posun doleva
Bitový posun doprava && Logické AND: vrátí true, pokud jsou splněny obě podmínky, jinak vrátí false. || Logické OR: vrátí true, pokud je splněna jedna z podmínek. Vrátí false, když jsou obě podmínky false. ! Logické NE: neguje podmínku.
C ++ používá k vyhodnocení logických výrazů metodu zkratu. V tomto musí C ++ vyhodnotit pouze první výraz / operand logického výrazu, aby poskytl výsledek. Například, pro logický operátor AND (&&) vyhodnotí C ++ pouze první výraz. Pokud je nepravdivé, bude výsledek nepravdivý, i když bude splněna druhá podmínka.
Podobně pro logické OR (||) vyhodnotí pouze první výraz. Pokud je první výraz pravdivý, pak bude výsledek pravdivý, takže druhý výraz nemusí vyhodnocovat.
Níže je uveden příklad, který ukazuje použití logických operátorů.
#include #include using namespace std; int main() int a=10, b=8,c=12,d=14; if(!(a==0)) cout<<'a is not zero'< Výstup:
a není nula
Logické AND je pravdivé
Logické NEBO je pravda
Ve výše uvedeném programu jsme využili všechny tři logické operátory k vyhodnocení výrazů a tisku výsledků.
Relační operátoři
Relační nebo porovnávací operátory se používají k porovnání dvou operandů. Výsledek hodnocení je pravdivý nebo nepravdivý.
C ++ podporuje následující relační operátory:
Operátor Popis !CHYBA! neočekávaný operátor '=' Vyhodnotí, zda jsou dva operandy stejné. Vrátí true, pokud se rovná else vrátí false. ! = (nerovná se) Doplňuje operátor „rovná se“. Vrátí true, pokud se operandy nerovnají. Faleš jinak. <(less than) Vrátí true, pokud je první operand menší než druhý. Faleš jinak. <=(less than equal to) Vrátí true, pokud je první operand menší nebo roven druhému operandu. Faleš jinak. > (větší než) Vrátí true, pokud je první operand větší než druhý. Faleš jinak. > = (větší než rovno) Vrátí true, pokud je první operand větší než roven druhému. Faleš jinak.
V následujícím příkladovém programu pochopíte relační operátory.
#include #include using namespace std; int main() { int a=10, b=8,c=12,d=14; if(a==b) cout<<'a is equal to b'< Výstup:
a není rovno b
c se nerovná d
(a + b) menší než / rovno (c + d)
(a-b) větší než / rovno (d-c)
Ve výše uvedeném programu vidíme použití relačních operátorů a způsob, jakým vyhodnocují poskytnuté výrazy.
Všimněte si, že v podmíněných příkazech můžeme poskytnout nejen hodnoty, ale také proměnné a výrazy.
Bitové operátory
Bitové operátory v C ++ pracují na bitech poskytovaných operandů. Bitové operátory se používají pouze na integrální typy, jako je celé číslo, znak atd., A ne na datové typy, jako je float, double atd.
Následují bitové operátory podporované C ++:
Operátoři Popis & (Binární AND) Provádí operaci AND na bitech operandu 1 a operandu 2. | (Binární OR) Provádí operaci NEBO na bitech operandu 1 a operandu 2. ^ (Binární XOR) Provede operaci XOR na bitech operandu 1 a operandu 2. ~ (Binární doplněk) Vezme jeden operand a převrátí jeho bity. <<( Binary left shift operator) Posune bity prvního operandu doleva na počet bitů určených druhým operandem. >> (Binární operátor posunu doprava) Posune bity prvního operandu doprava na počet míst určených druhým operandem.
Tito bitoví operátoři pracují na operandech bit-by-bit způsobem. Níže jsou uvedeny pravdivostní tabulky pro operace AND, OR a XOR.
Zvažte a a b jako dva bity, na nichž se mají provádět operace AND, OR a XOR.
Pravdivé tabulky pro stejné jsou uvedeny níže:
na b a & b a | b a ^ b 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0
Pojďme si vzít příklad, abychom porozuměli bitovým operacím.
Nechť a = 8 a b = 4
Binární reprezentace a a b je následující:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
Ve výše uvedeném příkladu vidíme, že bitový AND 8 a 4 je 0. Bitový OR 8 a 4 je 12 a bitový XOR 8 a 4 je také 12.
Toto je způsob, jakým bitové operace provádějí bitové operátory.
Příklad předvádějící bitové operátory.
#include #include using namespace std; int main() int a=8,b=4,c; c = a&b; cout<<'Result of & : '< Výstup:
Výsledek &: 0
Výsledek | : 12
Výsledek ^: 12
Výsledek<< by 2 bits: 32
Výsledek >> o 2 bity: 1
Výsledek ~: -4
Ve výše uvedeném programu jsme demonstrovali použití bitových operátorů a také vytiskli výstup každé z operací.
Operátoři přiřazení
Operátor přiřazení „=“ slouží k přiřazení hodnoty proměnné. LHS operátora přiřazení je proměnná a RHS je hodnota, která má být přiřazena proměnné. Hodnota na pravé straně musí být stejného typu jako hodnota proměnné na levé straně.
Všimněte si rozdílu mezi operátory „=“ a „==“. První je operátor přiřazení a druhý je operátor rovnosti.
Operace přiřazení probíhá zprava doleva. Kromě operátoru přiřazení „=“ existují další varianty operátoru přiřazení, které jsou známé jako „operátory složeného přiřazení“. Tito operátoři kromě přiřazení provedou operaci.
c # otázky a odpovědi na rozhovor
Níže uvedená tabulka poskytuje popis těchto operátorů přiřazení.
Operátor Popis = Přiřadí hodnotu operandu RHS operandu LHS + = Přidá RHS operand k LHS operandu a přiřadí výsledek v LHS operandu. - = Odečte operátor RHS operandu LHS a výsledek přiřadí operandu LHS * = znásobí operátor RHS na operátor LHS a výsledek přiřadí operandu LHS / = rozděluje operand RHS na operátor LHS a přiřadí výsledek operandu LHS
Jak je znázorněno ve výše uvedené tabulce, jsou-li x a y operandy, x + = y je ekvivalentní x = x + y.
Podobně,
x - = y je ekvivalentní x = x-y.
x * = y je ekvivalentní x = x * y.
x / = y je ekvivalentní x = x / y.
Níže uvedený příklad programování ukazuje tyto operátory přiřazení.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Výstup:
Zadejte vstupní proměnnou y: 4
Hodnota x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1

Ve výše uvedeném příkladu jsme demonstrovali operátory přiřazení i složené přiřazení.
Poznámka: Můžeme také kombinovat další binární operátory jako%,<>, &, |, ^ atd. do složených příkazů přiřazení kromě těch, které jsou již předvedeny.
Ostatní operátoři
Zatím jsme prozkoumali všechny hlavní operátory v C ++. Existuje několik dalších operátorů C ++, kteří potřebují naši pozornost.
Mezi tyto operátory patří:
i) sizeof operator
sizeof je unární operátor, který se značně používá v C a C ++. Sizeof vrací velikost jeho operandu. Návratová hodnota je obvykle nepodepsaný integrální typ označený „size_t“.
Operátor Sizeof má mnoho použití v jazycích C a C ++. Lze jej použít ke zjištění velikosti proměnných, polí nebo výrazů a dokonce k přidělení bloků paměti.
ii) Podmíněný ternární operátor
Podmíněný operátor v C ++ lze použít jako náhradu za příkaz if-else.
Obecná syntaxe podmíněného operátoru je:
Stav? výraz1: výraz2;
Pokud je podmínka pravdivá, bude vyhodnocen výraz 1. Pokud je podmínka nepravdivá, bude výraz2 vyhodnocen.
Upozorňujeme, že výraz1 a výraz2 musí být stejných datových typů, aby se předešlo možným chybám.
Doporučené čtení => Ternární operátor v C #
(iii) Operátor čárky
Operátor čárky, který je reprezentován jako token „,“, lze použít jako operátor i jako oddělovač.
Jako operátor se čárka používá, když je třeba vyhodnotit více než jeden výraz. LHS je přiřazen pouze výraz zcela vpravo.
Například,zvažte následující výraz.
x = (y = 4, y + 1);
V tomto výrazu máme dva výrazy na pravé straně oddělené čárkou. Zde čárka funguje jako operátor. Nejprve bude vyhodnocen výraz y = 4. Potom bude další výraz y + 1 vyhodnocen pomocí výsledku prvního výrazu, tj. Y = 4. Hodnota y + 1 bude tedy 5 a tato hodnota bude přiřazena k x.
Jako oddělovač lze čárku použít kdekoli k oddělení definic, seznamu parametrů atd.
(iv) Provozovatel přístupu členů
Existují dva operátory, které se používají pro přístup k jednotlivým členům tříd, struktur nebo odborů v C ++. Jedná se o operátor tečky (.) A operátor šipky (->). Tyto operátory se naučíme podrobně, když se naučíme objektově orientované programování v C ++.
Níže uvedený příklad ukazuje použití sizeof, čárky a podmíněného operátoru.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Výstup:
Hodnota x = 7
Proměnná x je větší než 5
sizeof (x): 4 sizeof (y): 4
Screenshot stejného obrázku je uveden níže.

Jak ukazuje výše uvedený program, nejprve máme deklarované dvě proměnné oddělené čárkou. (čárka jako oddělovač). Dále máme operátor čárky se dvěma výrazy. Jak vidíme z výstupu, hodnota výrazu zcela vpravo je přiřazena proměnné x. Dále předvedeme podmíněný operátor, který vyhodnotí, zda je x menší než 5.
Nakonec předvedeme použití operátoru sizeof. Zde používáme operátor sizeof k získání velikosti proměnných xay. Jelikož obě jsou celočíselné proměnné, vrácená velikost je 4 bajty.
(v) Přednost operátora a asociativita
Už jsme viděli téměř všechny operátory C ++ a víme, že je lze použít ve výrazech k provádění konkrétních operací. Ale výrazy, které jsme viděli v příkladech, jsou jednoduché a přímé. V závislosti na našich požadavcích se však výrazy stávají stále složitějšími.
Takové složité výrazy budou mít více než jeden operátor a mnoho operandů. V takové situaci musíme vyhodnotit, který operátor má být vyhodnocen jako první.
Například, zvažte následující výraz.
x = 4 + 5/3;
Zde máme operátory + a / a musíme se rozhodnout, který výraz bude vyhodnocen jako první. Z matematického hlediska víme, že rozdělení bude provedeno před přidáním. Výraz se tedy stane x = 4 + (5/3) = 5.
Ale když se kompilátor potýká s takovou situací, musíme také mít podobný mechanismus k rozhodování o pořadí operací, aby mohl správně vyhodnotit výraz.
Toto pořadí, ve kterém jsou vyhodnoceny operátory ve složeném výrazu, se nazývá „Precedence“ operátoru. C ++ má definovanou prioritu pro všechny operátory a operátory s vyšší prioritou jsou vyhodnoceny jako první.
Co se stane, když máme dva operátory vedle sebe ve výrazu se stejnou prioritou? To je místo, kde asociativita operátora přichází do obrazu.
Asociativita říká kompilátoru, zda má vyhodnotit výraz v pořadí zleva doprava nebo zprava doleva. Takže pomocí priority a asociativity operátoru můžeme efektivně vyhodnotit výraz a získat požadovaný výsledek.
C ++ poskytuje tabulku skládající se z priority a asociativity různých operátorů, které používá.
Tato tabulka je uvedena níže.
Priorita / asociativita Operátor Popis 1 Žádné ::
:: Provozovatel řešení rozsahu
(unární)
(binární) 2 L-> R ()
()
()
{}
typ()
typ{}
()
.
->
++
––
psí typ
const_cast
dynamic_cast
reinterpret_cast
static_cast Závorky
Volání funkce
Inicializace
Jednotná inicializace (C ++ 11)
Funkční obsazení
Funkční obsazení (C ++ 11)
Pole dolní index
Přístup členů z objektu
Přístup členů z objektu ptr
Po přírůstku
Po odečtení
Informace o typu běhu
Odhoďte konst
Obsazení s kontrolou typu za běhu
Přetypování jednoho typu na druhý Přetypování ověřené podle typu kompilace 3 R-> L +
-
++
––
!
~
(typ)
velikost
&
*
Nový
Nový()
vymazat
vymazat() Unární víc
Unární mínus
Předběžný přírůstek
Předběžné snížení
Logické NE
Bitové NENÍ
Obsazení ve stylu C.
Velikost v bajtech
Adresa
Dereference
Dynamická alokace paměti
Dynamická alokace pole
Dynamické mazání paměti
Dynamické mazání pole 4 L-> R -> *
. * Výběr ukazatele člena
Selektor členských objektů 5 L-> R *
/
% Násobení
Divize
Modul 6 L-> R +
- Přidání
Odčítání 8 L-> R <
<=
>
> = Srovnání méně než
Porovnání menší než nebo rovno
Srovnání větší než
Srovnání větší než nebo rovno 9 L-> R !CHYBA! nelegální znak '!' Rovnost
Nerovnost 10 L-> R & Bitové AND 11 L-> R ^ Bitový XOR 12 L-> R | Bitové NEBO 13 L-> R && Logické AND 14 L-> R || Logické NEBO 15 R-> L. ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Podmíněné (viz poznámka níže)
Úkol
Přiřazení násobení
Přiřazení divize
Přiřazení modulu
Přiřazení sčítání
Přiřazení odčítání
Bitový posun přiřazení doleva
Přiřazení bitového posunu doprava
Bitové AND přiřazení
Bitové NEBO přiřazení
Bitové přiřazení XOR 16 R-> L házet Vyhoďte výraz 17 L-> R , Operátor čárky
Poznámky:
- Úroveň priority 1 je nejvyšší prioritou a úroveň 17 je nejnižší. Nejprve se vyhodnotí operátory s vyšší úrovní priority.
- L-> R znamená asociativitu zleva doprava.
- R-> L znamená asociativitu zprava doleva.
Závěr
Toto je vše o operátorech v C ++.
Diskutovali jsme téměř o všech operátorech. Některé konkrétní operátory, které jsou přítomny ve výše uvedené tabulce priorit, o kterých jsme se nezmínili, budou popsány podle témat, která pokryjeme v našich nadcházejících cvičeních.
=> Prohlédněte si úplný seznam výukových programů C ++ zde
Doporučené čtení
- Příklady aritmetických a booleovských operátorů Unix Shell Script
- Operátoři Pythonu
- Nové / odstranit operátory v C ++ s příklady
- Datové typy Pythonu
- Podmíněné příkazy Unixu: Pokud jsou to ostatní a relační operátoři
- Výukový program Python DateTime s příklady
- Výukový program HTML Injection: Typy a prevence s příklady
- Vyjmout příkaz v Unixu s příklady