c operators types
ako otvoriť bleskový objekt rázovej vlny
Kompletná štúdia operátorov v jazyku C ++ s príkladmi:
V tomto Intenzívna školiaca séria C ++, Dozvedeli sme sa o rôznych konceptoch v C ++, ako sú premenné, triedy ukladacích priestorov, kvalifikátory typov atď., v našich predchádzajúcich kurzoch. Tiež sme prišli na to, ako môžeme tieto premenné upravovať.
Na vykonanie týchto úprav je potrebné vykonať operácie s týmito premennými a konštantami a na vykonávanie týchto operácií použiť operátory.
Operátory sú symboly, ktoré pôsobia na premenné alebo iné entity, ktoré sa nazývajú operandy, a pomocou matematických alebo logických operácií upravujú svoje hodnoty a zodpovedajúcim spôsobom vytvárajú výsledky.
Čo sa dozviete:
Operátory v C ++
Operátory tvoria základ všetkých programovacích jazykov. Bez operátorov nemôžeme upravovať alebo manipulovať s entitami programovacích jazykov, a teda nemôžeme dosiahnuť požadované výsledky. C ++ je veľmi bohatý na zabudované operátory, o ktorých si podrobne povieme v tomto návode.
V C ++ sú väčšinou operátory binárne operátory, t. J. Tieto operátory vyžadujú na vykonanie operácie dva operandy. Niekoľko operátorov, ako je operátor ++ (prírastok), je unárnym operátorom, čo znamená, že pracujú iba s jedným operandom.
V jazyku C ++ existuje tiež ternárny operátor s názvom Conditional Operator, ktorý berie tri operandy. Podrobne sa o tom dozvieme v neskoršej časti tutoriálu.
Typy operátorov v C ++
Prevádzkovatelia v jazyku C ++ sú klasifikovaní takto:
Pozrime sa podrobne na každý typ operátora C ++ !!
Aritmetické operátory
Aritmetické operátory sa používajú na vykonávanie základných matematických operácií na operandoch.
C ++ podporuje nasledujúce aritmetické operácie:
Prevádzkovateľ | Binárne / unárne | Popis |
---|---|---|
- | Unárny | Decrement operator - zníži hodnotu operandu o 1 |
+ | Binárne | Sčítanie dvoch operandov |
- | Binárne | Odčítanie dvoch operandov |
* | Binárne | Násobenie dvoch operandov |
/ | Binárne | Rozdelenie dvoch operandov |
% | Binárne | Operátor modulu - výsledkom je zvyšok rozdelenia |
++ | Unárny | Prírastkový operátor - zvyšuje hodnotu operandu o 1 |
Nasledujúci príklad demonštruje prvých päť aritmetických operátorov 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 = '< Tomu môžeme lepšie porozumieť na nasledujúcom príklade. #include #include using namespace std; int main() { int x=4,y; y = ++x; cout<<'PreIncrement:Value of x = '<Logickí operátori Logické operátory sa používajú na vyhodnotenie kombinácie podmienok / obmedzení s cieľom získať výslednú hodnotu. Výsledok vyhodnotenia booleovského výrazu je booleovský, ktorý je buď true, alebo false.
C ++ podporuje nasledujúce logické operátory:
Prevádzkovateľ Popis 7 L-> R <<
>> Bitový posun vľavo
Bitový posun doprava && Logické AND: vráti hodnotu true, ak sú splnené obe podmienky, inak vráti hodnotu false. || Logické ALEBO: vráti hodnotu true, ak je splnená jedna z podmienok. Vráti hodnotu false, ak sú obidve podmienky nepravdivé. ! Logické NIE: neguje stav.
C ++ využíva na vyhodnotenie logických výrazov skratovú metódu. V tomto prípade musí C ++ vyhodnotiť iba prvý výraz / operand logického výrazu, aby poskytol výsledok. Napríklad, pre logický operátor AND (&&) vyhodnotí C ++ iba prvý výraz. Ak je nepravdivé, potom bude výsledok nepravdivý, aj keď je splnená druhá podmienka.
Podobne pre logické OR (||) vyhodnotí iba prvý výraz. Ak je prvý výraz pravdivý, potom bude výsledok pravdivý, takže nemusí hodnotiť druhý výraz.
Ďalej je uvedený príklad, ktorý ukazuje použitie logických operátorov.
#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ýkon:
a nie je nula
Logické AND je pravdivé
Logické ALEBO je pravda
Vo vyššie uvedenom programe sme využili všetky tri logické operátory na vyhodnotenie výrazov a vytlačenie výsledkov.
Relační operátori
Relačné alebo porovnávacie operátory sa používajú na porovnanie dvoch operandov. Výsledok hodnotenia je pravdivý alebo nepravdivý.
C ++ podporuje nasledujúcich relačných operátorov:
Prevádzkovateľ Popis !CHYBA! nečakaný operátor '=' Vyhodnocuje, či sú dva operandy rovnaké. Vráti hodnotu true, ak parameter else else vráti hodnotu false. ! = (nerovná sa) Dopĺňa operátor „rovná sa“. Vráti true, ak sa operandy nerovnajú. Inak nepravda. <(less than) Vráti hodnotu true, ak je prvý operand menší ako druhý. Inak nepravda. <=(less than equal to) Vráti hodnotu true, ak je prvý operand menší alebo rovný druhému operandu. Inak nepravda. > (väčšie ako) Vráti hodnotu true, ak je prvý operand väčší ako druhý. Inak nepravda. > = (väčšie ako rovné) Vráti hodnotu true, ak je prvý operand väčší ako druhý. Inak nepravda.
V nasledujúcom príklade programu porozumieme relačným operátorom.
#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ýkon:
a sa nerovná b
c sa nerovná d
(a + b) menšie ako / rovné (c + d)
(a-b) väčšie ako / rovné (d-c)
Vo vyššie uvedenom programe vidíme použitie relačných operátorov a spôsob, akým hodnotia poskytnuté výrazy.
Upozorňujeme, že v podmienených príkazoch môžeme uviesť nielen hodnoty, ale aj premenné a výrazy.
Bitoví operátori
Bitové operátory v C ++ pracujú na bitoch poskytnutých operandov. Bitové operátory sa používajú iba na integrálne typy, ako je celé číslo, znak atď., Nie na dátové typy, ako je float, double atď.
Nasledujú bitové operátory podporované v C ++:
Operátorov Popis & (Binárne AND) Vykonáva operáciu AND na bitoch operandu 1 a operandu 2. | (Binárne ALEBO) Vykoná operáciu ALEBO na bitoch operandu 1 a operandu 2. ^ (Binárne XOR) Vykoná operáciu XOR na bitoch operandu 1 a operandu 2. ~ (Binárny doplnok) Vezme jedného operandu a invertuje jeho bity. <<( Binary left shift operator) Posunie bity prvého operandu doľava na počet bitov určených druhým operandom. >> (Binárny operátor posunu doprava) Posunie bity prvého operandu doprava na počet miest určených druhým operandom.
Tieto bitové operátory pracujú na operandoch spôsobom bit-by-bit. Tabuľky pravdy pre operácie AND, OR a XOR sú uvedené nižšie.
Zvážte a a b ako dva bity, na ktorých sa majú vykonať operácie AND, OR a XOR.
Tabuľky pravdy pre rovnaké sú uvedené nižšie:
do b a & b a | b a ^ b 0 0 0 0 0 jeden 0 0 jeden jeden 0 jeden 0 jeden jeden jeden jeden jeden jeden 0
Urobme si príklad na pochopenie bitových operácií.
Nech a = 8 a b = 4
Binárna reprezentácia a a b je nasledovná:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
Vo vyššie uvedenom príklade vidíme, že bitový operátor AND z 8 a 4 je 0. Bitový operátor OR z 8 a 4 je 12 a bitový XOR z 8 a 4 je tiež 12.
Toto je spôsob, akým bitové operácie vykonávajú bitové operátory.
Príklad demonštrujúci bitové operátory.
#include #include using namespace std; int main() int a=8,b=4,c; c = a&b; cout<<'Result of & : '< Výkon:
ako vyriešiť index poľa mimo hraníc výnimky v java -
Výsledok &: 0
Výsledok | : 12
Výsledok ^: 12
Výsledok<< by 2 bits: 32
Výsledok >> o 2 bity: 1
Výsledok ~: -4
Vo vyššie uvedenom programe sme demonštrovali použitie bitových operátorov a tiež sme vytlačili výstup každej z operácií.
Prevádzkovatelia pridelenia
Operátor priradenia „=“ sa používa na priradenie hodnoty premennej. LHS operátora priradenia je premenná a RHS je hodnota, ktorá sa má priradiť k premennej. Hodnota na pravej strane musí byť rovnakého typu ako hodnota premennej na ľavej strane.
Všimnite si rozdiel medzi operátormi „=“ a „==“. Prvý je operátor priradenia a druhý operátor rovnosti.
Operácia priradenia sa uskutočňuje sprava doľava. Okrem operátora priradenia „=“ existujú aj ďalšie varianty operátora priradenia, ktoré sú známe ako „operátory zloženého priradenia“. Títo operátori okrem zadania vykonajú aj operáciu.
V nasledujúcej tabuľke je uvedený popis týchto operátorov priradenia.
Prevádzkovateľ Popis = Priradí hodnotu operandu RHS operandu LHS + = Pridá operand RHS k LHS operandu a výsledok priradí k LHS operandu. - = Odpočíta operátor RHS od operátora LHS a výsledok priradí operandovi LHS * = vynásobí operátor RHS na operátor LHS a výsledok priradí operandovi LHS / = rozdelí operand RHS na operátor LHS a výsledok priradí operandovi LHS
Ako je uvedené v predchádzajúcej tabuľke, ak x a y sú operandy, x + = y je ekvivalentné x = x + y.
Podobne
x - = y je ekvivalentné x = x-y.
x * = y je ekvivalentné x = x * y.
x / = y je ekvivalentné x = x / y.
Nasledujúci príklad programovania demonštruje týchto operátorov priradenia.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Výkon:
Zadajte vstupnú premennú y: 4
Hodnota x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1

Vo vyššie uvedenom príklade sme si demonštrovali operátory priradenia aj zložené priradenia.
Poznámka: Môžeme tiež kombinovať ďalšie binárne operátory ako%,<>, &, |, ^ atď. do zložených príkazov priradenia okrem tých, ktoré sú už demonštrované.
Ostatní prevádzkovatelia
Zatiaľ sme preskúmali všetkých hlavných operátorov v C ++. Existuje niekoľko ďalších operátorov C ++, ktorí si vyžadujú našu pozornosť.
Medzi týchto operátorov patria:
i) veľkosť operátora
sizeof je unárny operátor, ktorý sa vo veľkej miere používa v jazykoch C a C ++. Sizeof vráti veľkosť operandu. Návratová hodnota je zvyčajne nepodpísaný integrálny typ označený ‘size_t’.
Operátor Sizeof má mnoho použití v jazykoch C a C ++. Môže sa použiť na zistenie veľkosti premenných, polí alebo výrazov a dokonca na pridelenie blokov pamäte.
ii) Podmienený ternárny operátor
Podmienený operátor v C ++ je možné použiť ako náhradu za príkaz if-else.
Všeobecná syntax pre podmienený operátor je:
Stav? výraz1: výraz2;
Ak je podmienka pravdivá, vyhodnotí sa výraz 1. Ak je podmienka nepravdivá, potom sa vyhodnotí výraz2.
Upozorňujeme, že výraz1 a výraz2 musia byť rovnakého typu údajov, aby sa zabránilo možným chybám.
Navrhované čítanie => Ternárny operátor v C #
(iii) Operátor čiarky
Operátor čiarky, ktorý je reprezentovaný ako token „,“, možno použiť ako operátor aj ako oddeľovač.
Ako operátor sa čiarka používa, keď sa má vyhodnotiť viac ako jeden výraz. LHS je priradený iba výraz úplne vpravo.
Napríklad,zvážte nasledujúci výraz.
x = (y = 4, y + 1);
V tomto výraze máme dva výrazy na pravej strane oddelené čiarkou. Čiarka tu funguje ako operátor. Najskôr sa vyhodnotí výraz y = 4. Potom sa ďalší výraz y + 1 vyhodnotí pomocou výsledku prvého výrazu, t. J. = 4. Hodnota y + 1 bude teda 5 a táto hodnota bude priradená k x.
Ako oddeľovač možno čiarku použiť kdekoľvek na oddelenie definícií, zoznamu parametrov atď.
(iv) Členský operátor prístupu
Existujú dva operátory, ktoré sa používajú na prístup k jednotlivým členom tried, štruktúr alebo odborov v C ++. Jedná sa o bodkový operátor (.) A šípkový (->) operátor. Tieto operátory sa podrobne naučíme, keď sa naučíme objektovo orientované programovanie v C ++.
Nasledujúci príklad demonštruje použitie sizeof, Comma a Conditional Operator.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Výkon:
Hodnota x = 7
Premenná x je väčšia ako 5
sizeof (x): 4 sizeof (y): 4
Screenshot toho istého je uvedený nižšie.

Ako je uvedené v predchádzajúcom programe, najskôr máme dve premenné deklarované a oddelené čiarkou. (čiarka ako oddeľovač). Ďalej tu máme operátor čiarky s dvoma výrazmi. Ako vidíme z výstupu, hodnota výrazu úplne vpravo je priradená premennej x. Ďalej demonštrujeme podmienený operátor na vyhodnotenie, či je x menšie ako 5.
Na záver si ukážeme použitie operátora sizeof. Tu použijeme operátor sizeof na získanie veľkosti premenných x a y. Pretože obe sú celočíselnými premennými, vrátená veľkosť je 4 bajty.
v) Prednosť a asociatívnosť operátora
Už sme videli takmer všetkých operátorov C ++ a vieme, že ich je možné použiť vo výrazoch na vykonávanie konkrétnych operácií. Ale výrazy, ktoré sme videli v príkladoch, sú jednoduché a priame. Avšak v závislosti na našich požiadavkách majú výrazy tendenciu byť čoraz zložitejšie.
Takéto komplexné výrazy budú mať viac ako jeden operátor a veľa operandov. V takejto situácii musíme vyhodnotiť, ktorý operátor sa má vyhodnotiť ako prvý.
Napríklad, zvážte nasledujúci výraz.
x = 4 + 5/3;
Tu máme operátory + a / a musíme sa rozhodnúť, ktorý výraz sa vyhodnotí ako prvý. Z matematického hľadiska vieme, že rozdelenie sa uskutoční pred pridaním. Výraz sa teda stane x = 4 + (5/3) = 5.
Ale keď je kompilátor konfrontovaný s takouto situáciou, musíme tiež mať podobný mechanizmus na rozhodovanie o poradí operácií, aby mohol správne vyhodnotiť výraz.
Toto poradie, v ktorom sa hodnotia operátory v zloženom výraze, sa nazýva „Prednosť“ operátora. C ++ má definované prednosť pre všetky operátory a operátory s vyššou prioritou sú vyhodnotené ako prvé.
Čo sa stane, keď máme vedľa seba dvoch operátorov vo výraze s rovnakou prednosťou? To je miesto, kde sa do obrazu dostane asociatívnosť operátora.
Asociativita informuje kompilátor, či má vyhodnotiť výraz v poradí zľava doprava alebo sprava doľava. Použitím priority a asociatívnosti operátora teda môžeme efektívne vyhodnotiť výraz a získať požadovaný výsledok.
C ++ poskytuje tabuľku pozostávajúcu z prednosti a asociativity rôznych operátorov, ktoré používa.
Táto tabuľka je uvedená nižšie.
Prednosť / asociatívnosť Prevádzkovateľ Popis 1 Žiadne ::
:: Prevádzkovateľ riešenia rozsahu
(unárny)
(binárne) 2 L-> R ()
()
()
{}
typ ()
typ {}
()
.
->
++
––
týfus
const_cast
dynamic_cast
reinterpret_cast
static_cast Zátvorky
Volanie funkcie
Inicializácia
Jednotná inicializácia (C ++ 11)
Funkčné obsadenie
Funkčné obsadenie (C ++ 11)
Pole dolného indexu
Prístup členov z objektu
Prístup členov z objektu ptr
Prírastok
Po znížení
Informácie o type behu
Odhodiť konšt
Obsadenie s kontrolou typu za behu
Prenášanie jedného typu na druhý Prenášanie podľa typu kompilácie 3 R-> L. +
-
++
––
!
~
(typ)
veľkosť
&
*
Nový
Nový()
vymazať
vymazať () Unárny viac
Unárne mínus
Predbežný prírastok
Predbežné zníženie
Logické NIE
Bitové NIE
Obsadenie v štýle C.
Veľkosť v bajtoch
Adresa spoločnosti
Dereferencia
Dynamické prideľovanie pamäte
Dynamické prideľovanie polí
Dynamické mazanie pamäte
Dynamické mazanie poľa 4 L-> R -> *
. * Selektor ukazovateľa člena
Selektor členských objektov 5 L-> R *
/
% Násobenie
Divízia
Modul 6 L-> R +
- Dodatok
Odčítanie 8 L-> R <
<=
>
> = Porovnanie menej ako
Porovnanie menšie alebo rovné
Porovnanie väčšie ako
Porovnanie väčšie alebo rovné 9 L-> R !CHYBA! nelegálny znak „!“ Rovnosť
Nerovnosť 10 L-> R & Bitové AND 11 L-> R ^ Bitový XOR 12 L-> R | Bitové ALEBO 13 L-> R && Logické AND 14 L-> R || Logické ALEBO 15 R-> L ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Podmienené (pozri poznámku nižšie)
Postúpenie
Priradenie násobenia
Priradenie divízie
Priradenie modulu
Priradenie sčítania
Priradenie odčítania
Bitové posunutie ľavého priradenia
Priradenie bitového posunu doprava
Bitové A priradenie
Bitové ALEBO priradenie
Bitové priradenie XOR 16 R-> L hodiť Vyhoďte výraz 17 L-> R , Operátor čiarky
Poznámky:
- Úroveň priority 1 je najvyššou úrovňou priority a úroveň 17 je najnižšia. Najskôr sa vyhodnotia operátori s vyššou úrovňou priority.
- L-> R znamená asociativitu zľava doprava.
- R-> L znamená asociativitu sprava doľava.
Záver
Toto je všetko o operátoroch v C ++.
Diskutovali sme takmer o všetkých operátoroch. Niektoré konkrétne operátory, ktoré sú prítomné vo vyššie uvedenej tabuľke priorít, o ktorých sme nehovorili, sa budú diskutovať podľa tém, ktorým sa budeme venovať v našich nadchádzajúcich tutoriáloch.
=> Ak chcete preskúmať celý zoznam výukových programov C ++, prečítajte si tu
Odporúčané čítanie
- Príklady aritmetických a boolovských operátorov Unix Shell Script
- Operátory Pythonu
- Noví / vymazaní operátorov v C ++ s príkladmi
- Dátové typy v Pythone
- Podmienečné vyhlásenia Unixu: Ak sú to iní a relačné operátory
- Výukový program pre Python DateTime s príkladmi
- Výukový program pre vstrekovanie HTML: Typy a prevencia s príkladmi
- Vystrihnite príkaz v systéme Unix s príkladmi