c operators types
Kompletna studija operatora na C ++ s primjerima:
U ovome Intenzivna C ++ serija treninga, u raznim konceptima na C ++-u poput varijabli, klasa pohrane, kvalifikatora tipova itd. saznali smo u našim ranijim vodičima. Također smo saznali kako možemo mijenjati ove varijable.
Da bismo izvršili ove izmjene, moramo izvršiti operacije nad tim varijablama i konstantama i za izvršavanje tih operacija koristimo se operatorima.
Operatori su simboli koji djeluju na varijable ili druge entitete koji se nazivaju operandi i izvode matematičke ili logičke operacije kako bi modificirali svoje vrijednosti i u skladu s tim dali rezultate.
Što ćete naučiti:
Operatori u C ++
Operateri čine osnovni temelj bilo kojeg programskog jezika. Bez operatora ne možemo mijenjati niti manipulirati entitetima programskih jezika i time ne možemo postići željene rezultate. C ++ je vrlo bogat ugrađenim operatorima o čemu ćemo detaljno raspravljati u ovom vodiču.
U C ++-u većina operatora su binarni operatori, tj. Ovi operateri zahtijevaju dva operanda da bi izveli operaciju. Nekoliko je operatora poput operatora ++ (inkrement) unarni operator, što znači da rade samo na jednom operandu.
U C ++-u postoji i ternarni operator pod nazivom Conditional Operator koji uzima tri operanda. O tome ćemo detaljno saznati u kasnijem dijelu tutorijala.
Vrste operatora u C ++
Operatori na C ++ klasificirani su kako je prikazano u nastavku:
Istražimo pojedinosti svake vrste C ++ operatora !!
Aritmetički operatori
Aritmetički operatori koriste se za izvođenje osnovnih matematičkih operacija nad operandima.
C ++ podržava sljedeće aritmetičke operacije:
Operater | Binarno / unarno | Opis |
---|---|---|
- | Unary | Operator smanjenja - smanjuje vrijednost operanda za 1 |
+ | Binarni | Dodatak dva operanda |
- | Binarni | Oduzimanje dvaju operanda |
* | Binarni | Množenje dva operanda |
/ | Binarni | Podjela dva operanda |
% | Binarni | Operator modula - rezultat je ostatak dijeljenja |
++ | Unary | Inkrementalni operator - povećava vrijednost operanda za 1 |
Slijedeći primjer prikazuje prvih pet aritmetičkih operatora u C ++
c ++ char u niz
#include #include using namespace std; int main() { int op1=3,op2=4; float op3=10.1,op4=5.4; cout<<'Operands are op1 = '< To možemo bolje razumjeti na sljedećem primjeru. #include #include using namespace std; int main() { int x=4,y; y = ++x; cout<<'PreIncrement:Value of x = '<Logički operatori Logički operatori koriste se za procjenu kombinacije uvjeta / ograničenja kako bi se dobila rezultanta. Rezultat procjene logičkog izraza je logička vrijednost koja je istinita ili netačna.
C ++ podržava sljedeće logičke operatore:
Operater Opis 7 L-> R <<
>> Bitni pomak ulijevo
Pomak u bitovima udesno && Logično I: vraća true ako su oba uvjeta istinita, inače vraća false. || Logično ILI: vraća true ako je jedan od uvjeta istinit. Vraća false ako su oba uvjeta netačna. ! Logično NIJE: negira stanje.
C ++ koristi metodu kratkog spoja za procjenu logičkih izraza. U tome C ++ mora procijeniti samo prvi izraz / operand logičkog izraza kako bi pružio rezultat. Na primjer, za logički operator AND (&&), C ++ procjenjuje samo prvi izraz. Ako je netočno, rezultat će biti lažan čak i ako je drugi uvjet istinit.
Slično tome, za logički OR (||) ocjenjuje samo prvi izraz. Ako je prvi izraz istinit, tada će rezultat biti istinit, tako da ne treba vrednovati drugi izraz.
Dolje je dan primjer koji prikazuje upotrebu logičkih operatora.
#include #include using namespace std; int main() int a=10, b=8,c=12,d=14; if(!(a==0)) cout<<'a is not zero'< Izlaz:
a nije nula
Logično I je istina
Logično ILI je istina
U gore navedenom programu koristili smo sva tri logička operatora kako bismo procijenili izraze i ispisali rezultate.
Relacijski operateri
Relacijski operateri ili operatori usporedbe koriste se za usporedbu dvaju operanda. Rezultat ocjene je ili istinit ili netačan.
C ++ podržava sljedeće relacijske operatore:
koji je najbolji glazbeni downloader za pc
Operater Opis ! POGREŠKA! neočekivani operator '=' Procjenjuje jesu li dva operanda jednaka. Vraća true ako jednako else vraća false. ! = (nije jednako) Dopunjuje operator 'jednako'. Vraća true ako operandi nisu jednaki. Inače lažno. <(less than) Vraća true ako je prvi operand manji od drugog. Inače lažno. <=(less than equal to) Vraća true ako je prvi operand manji ili jednak drugom operandu. Inače lažno. > (veće od) Vraća true ako je prvi operand veći od drugog. Inače lažno. > = (veće od jednako) Vraća true ako je prvi operand veći od jednakog drugom. Inače lažno.
Pogledajte donji primjer programa za razumijevanje relacijskih operatora.
#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'< Izlaz:
a nije jednako b
c nije jednako d
(a + b) manje od / jednako (c + d)
(a-b) veće od / jednako (d-c)
U gornjem programu vidimo uporabu relacijskih operatora i način na koji oni procjenjuju dane izraze.
Imajte na umu da u uvjetnim iskazima možemo pružiti ne samo vrijednosti već i varijable i izraze.
Bitovni operateri
Bitovni operatori u C ++ rade na bitovima ponuđenih operanda. Bitni operatori primjenjuju se samo na integralne tipove poput cijelog broja, znaka itd., A ne i na tipove podataka poput float, double itd.
Slijede bitni operatori koje podržava C ++:
Operateri Opis & (Binarno I) Izvodi I operaciju na bitovima operanda 1 i operanda 2. | (Binarno ILI) Izvodi ILI operaciju na bitovima operanda 1 i operanda 2. ^ (Binarni XOR) Izvodi XOR operaciju na bitovima operanda 1 i operanda 2. ~ (Binarni dodatak) Uzima jedan operand i invertira njegove bitove. <<( Binary left shift operator) Pomjera bitove prvog operanda ulijevo u broj bitova specificiranih drugim operandom. >> (Binarni operator desne smjene) Pomjera bitove prvog operanda udesno na broj mjesta koja je odredio drugi operand.
Ovi bitni operatori djeluju na operande na bit-by-bit način. Tablice istine za operacije AND, OR i XOR date su u nastavku.
Smatrajte a i b kao dva bita na kojima treba izvršiti operacije AND, OR i XOR.
Tablice istine za iste su kako su date u nastavku:
do 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
Uzmimo primjer za razumijevanje bitovnih operacija.
Neka je a = 8 i b = 4
Binarni prikaz a i b je sljedeći:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
U gornjem primjeru vidimo da je bitni AND od 8 i 4 jednak 0. Bitni OR od 8 i 4 je 12, a bitni XOR od 8 i 4 također je 12.
To je način na koji bitovne operacije izvode bitne operacije.
Primjer demonstracije bitnih operatora.
#include #include using namespace std; int main() int a=8,b=4,c; c = a&b; cout<<'Result of & : '< Izlaz:
Rezultat &: 0
Rezultat od | : 12
Rezultat od ^: 12
Rezultat od<< by 2 bits: 32
Rezultat >> od 2 bita: 1
Rezultat ~: -4
U gore navedenom programu pokazali smo upotrebu bitnih operatora i također ispisali izlaz svake od operacija.
Operatori dodjele
Operator dodjeljivanja '=' koristi se za dodjeljivanje vrijednosti varijabli. LHS operatora dodjele je varijabla, a RHS je vrijednost koja se treba dodijeliti varijabli. Vrijednost na desnoj strani mora biti iste vrste kao i vrijednost varijable na lijevoj strani.
Obratite pažnju na razliku između operatora ‘=’ i ‘==’. Prvi je operator dodjele, a kasnije operator jednakosti.
Operacija dodjele odvija se zdesna nalijevo. Osim operatora dodjele ‘=’, postoje i druge varijacije operatora dodjele koje su poznate kao ‘složeni operatori dodjele’. Ovi operateri izvršavaju operaciju uz dodjelu.
Tablica u nastavku daje opis ovih operatora dodjele.
Operater Opis = Dodjeljuje vrijednost RHS operanda LHS operandu + = Dodaje RHS operand LHS operandu i dodjeljuje rezultat u LHS operandu. - = Oduzima RHS operand LHS operandu i dodjeljuje rezultat LHS operandu * = množi RHS operand na LHS operand i dodjeljuje rezultat LHS operandu / = dijeli RHS operand na LHS operand i dodjeljuje rezultat LHS operandu
Kao što je prikazano u gornjoj tablici, ako su x i y operandi, x + = y je ekvivalentno x = x + y.
Slično tome,
x - = y je ekvivalentno x = x-y.
x * = y je ekvivalentan x = x * y.
x / = y je ekvivalentno x = x / y.
Sljedeći primjer programiranja prikazuje ove operatore dodjele.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Izlaz:
Unesite ulaznu varijablu y: 4
Vrijednost x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1

U gornjem primjeru demonstrirali smo dodjelu kao i složene operatore dodjele.
Bilješka: Također možemo kombinirati ostale binarne operatore poput%,<>, &, |, ^ itd. u složene izjave o dodjeli uz one koje su već demonstrirane.
Ostali operateri
Do sada smo istražili sve glavne operatore u C ++. Postoji još nekoliko dodatnih C ++ operatora kojima je potrebna naša pažnja.
Ti operateri uključuju:
(i) veličina operatora
sizeof je unarni operator koji se široko koristi u C i C ++. Sizeof vraća veličinu svog operanda. Povratna vrijednost obično je nepotpisani integralni tip označen s ‘size_t’.
Operator Sizeof koristi se u C i C ++ jezicima. Može se koristiti za otkrivanje veličine varijabli, polja ili izraza, pa čak i za dodjelu blokova memorije.
(ii) Uvjetni ternarni operater
Uvjetni operator u C ++-u može se koristiti kao zamjena za if-else izraz.
Opća sintaksa za uvjetni operator je:
Stanje? izraz1: izraz2;
Ako je uvjet istinit, vrednovat će se izraz 1. Ako je uvjet netačan, tada će se procijeniti izraz2.
Napominjemo da izraz1 i izraz2 moraju biti iste vrste podataka kako bi se izbjegle potencijalne pogreške.
Predloženo čitanje => Ternarni operator u C #
(iii) Zapetac
Operator zarez koji je predstavljen kao znak ',' može se koristiti kao operator kao i kao razdvajač.
Kao operator, zarez se koristi kada postoji više od jednog izraza koji se treba procijeniti. Samo je krajnji desni izraz dodijeljen LHS-u.
Na primjer,razmotrite sljedeći izraz.
x = (y = 4, y + 1);
U ovom izrazu imamo dva izraza na desnoj strani odvojena zarezom. Ovdje zarez djeluje kao operator. Prvo će se izračunati izraz y = 4. Tada će se sljedeći izraz y + 1 procijeniti pomoću rezultata prvog izraza, tj. Y = 4. Tako će vrijednost y + 1 biti 5 i ta će vrijednost biti dodijeljena x.
Kao separator, zarez se može koristiti bilo gdje za razdvajanje definicija, popisa parametara itd.
(iv) Operator pristupa članovima
Postoje dva operatora koja se koriste za pristup pojedinačnim članovima klasa, struktura ili sindikata u C ++. To su operator točkica (.) I strelica (->). Te ćemo operatore detaljno naučiti kada naučimo objektno orijentirano programiranje na jeziku C ++.
Slijedeći primjer pokazuje upotrebu veličine, zareza i uvjetnog operatora.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Izlaz:
Vrijednost x = 7
Varijabla x veća je od 5
veličina (x): 4 veličina (y): 4
Snimak zaslona za isti dat je u nastavku.

Kao što je prikazano u gornjem programu, prvo imamo dvije varijable deklarirane i odvojene zarezom. (zarez kao odvajač). Dalje, imamo operator zarez s dva izraza. Kao što možemo vidjeti iz rezultata, vrijednost desnog izraza dodjeljuje se varijabli x. Zatim demonstriramo uvjetni operator za procjenu je li x manji od 5.
Na kraju, demonstriramo upotrebu sizeof operatora. Ovdje koristimo operator sizeof da bismo dobili veličinu varijabli x i y. Kako su obje cjelobrojne varijable, vraćena veličina je 4 bajta.
(v) Prednost operatora i udruživanje
Već smo vidjeli gotovo sve operatore C ++ i znamo da se oni mogu koristiti u izrazima za izvršavanje određenih operacija. Ali izrazi koje smo vidjeli u primjerima jednostavni su i jasni. Međutim, ovisno o našim zahtjevima, izrazi postaju sve složeniji.
Takvi složeni izrazi imat će više operatora i mnogo operanda. U takvoj situaciji moramo procijeniti koji će se operater prvo procijeniti.
Na primjer, razmotrite sljedeći izraz.
x = 4 + 5/3;
Ovdje imamo + i / operatore i trebamo odlučiti koji će se izraz prvo vrednovati. U matematičkom smislu znamo da će se dijeljenje provesti prije zbrajanja. Tako će izraz postati x = 4 + (5/3) = 5.
No kad se kompajler suoči s takvom situacijom, trebamo imati i sličan mehanizam za odlučivanje o redoslijedu operacija, kako bi mogao pravilno procijeniti izraz.
navedite i objasnite najmanje dvije stvari koje možete postići testiranjem softvera na sigurnosna pitanja.
Ovaj redoslijed kojim se ocjenjuju operatori u složenom izrazu naziva se 'prednost' operatora. C ++ je definirao prednost za sve operatore i prvo se ocjenjuju operatori s većim prioritetom.
Što se događa kada imamo dva operatora jedan pored drugog u izrazu s istim prioritetom? Tu dolazi do izražaja asocijativnost operatora.
Asocijativnost govori kompajleru treba li procijeniti izraz slijeda slijeva udesno ili slijeva udesno ulijevo. Tako koristeći prednost i asocijativnost operatora možemo učinkovito procijeniti izraz i dobiti željeni rezultat.
C ++ pruža tablicu koja se sastoji od prednosti i asocijativnosti različitih operatora koje koristi.
Ova je tablica data u nastavku.
Prednost / Asocijativnost Operater Opis 1 Nijedan ::
:: Operator razlučivosti opsega
(unarno)
(binarni) 2 L-> R ()
()
()
{}
tip()
tip{}
()
.
->
++
––
tipičan
const_cast
dinamički_kaz
reinterpret_cast
static_cast Zagrade
Poziv funkcije
Inicijalizacija
Jednoobrazna inicijalizacija (C ++ 11)
Funkcionalna glumačka postava
Funkcionalna postava (C ++ 11)
Podpisnik niza
Pristup člana iz objekta
Pristup člana s objekta ptr
Nakon povećanja
Poslije smanjenja
Informacije o tipu vremena izvođenja
Odbaci const
Glumica provjerena u vremenu izvođenja
Emitirajte jednu vrstu na druguSastav provjeren u vremenu kompajliranja 3 R-> L +
-
++
––
!
~
(tip)
veličina
&
*
novi
novi()
izbrisati
izbrisati() Unary više
Unarni minus
Prethodno povećanje
Prethodno smanjenje
Logično NE
Bitno NE
Glumačka ekipa u C stilu
Veličina u bajtovima
Adresa
Dereference
Dinamička dodjela memorije
Dinamičko raspoređivanje polja
Dinamičko brisanje memorije
Brisanje dinamičkog niza 4 L-> R -> *
. * Birač pokazivača člana
Birač člana člana 5 L-> R *
/
% Množenje
Podjela
Modul 6 L-> R +
- Dodatak
Oduzimanje 8 L-> R <
<=
>
> = Usporedba manja od
Usporedba manja od ili jednaka
Usporedba veća od
Usporedba veća od ili jednaka 9 L-> R ! POGREŠKA! ilegalni lik '!' Jednakost
Nejednakost 10 L-> R & Bitno I 11 L-> R ^ Bitno XOR 12 L-> R | Bitno ILI 13 L-> R && Logično I 14 L-> R || Logično ILI 15 R-> L ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Uvjetno (vidi napomenu u nastavku)
Zadatak
Zadatak množenja
Zadaća divizije
Dodjela modula
Zadatak sabiranja
Zadatak oduzimanja
Pomak ulijevo ulijevo
Pomicanje udesno udesno
Bitno I dodjeljivanje
Bitno ILI dodjeljivanje
Bitno dodijeljeno XOR 16 R-> L bacanje Bacanje izraza 17 L-> R , Operator zarez
Bilješke:
- Razina prvenstva 1 najviša je razina prvenstva, a razina 17 najniža. Prvo se ocjenjuju operateri s višom razinom prednosti.
- L-> R znači asocijativnost slijeva udesno.
- R-> L znači asocijativnost zdesna nalijevo.
Zaključak
Ovo je sve o operatorima u C ++.
Raspravljali smo o gotovo svim operaterima. O nekim određenim operatorima koji su prisutni u gornjoj tablici prioriteta, a o kojima nismo razgovarali, razgovarat će se u skladu s temama koje obrađujemo u našim nadolazećim vodičima.
=> Pogledajte ovdje kako biste istražili cjeloviti popis vodiča za C ++
Preporučena literatura
- Primjeri aritmetičkih i logičkih operatora skripte ljuske Unix
- Python operateri
- Novi / Izbriši operatore u C ++ s primjerima
- Python tipovi podataka
- Uvjetne izjave Unixa: ako je to slučaj drugo i relacijski operateri
- Python DateTime Vodič s primjerima
- Vodič za HTML injekcije: Vrste i prevencija s primjerima
- Izreži naredbu u Unixu s primjerima