c operators types
Un studiu complet al operatorilor în C ++ cu exemple:
In acest Seria de antrenament intensiv C ++, am aflat despre diferitele concepte din C ++, cum ar fi variabilele, clasele de stocare, calificatoarele de tip etc. în tutorialele noastre anterioare. De asemenea, am aflat cum putem modifica aceste variabile.
Pentru a face aceste modificări, trebuie să efectuăm operații pe aceste variabile și constante și pentru a efectua aceste operații folosim operatorii.
Operatorii sunt simboluri care acționează asupra variabilelor sau altor entități care sunt numite operanzi și efectuează operații matematice sau logice pentru a-și modifica valorile și a produce rezultate în consecință.
Ce veți învăța:
Operatori în C ++
Operatorii formează baza de bază a oricărui limbaj de programare. Fără operatori, nu putem modifica sau manipula entitățile limbajelor de programare și, prin urmare, nu putem produce rezultatele dorite. C ++ este foarte bogat în operatori încorporați, pe care îi vom discuta în detaliu în acest tutorial.
În C ++ majoritatea operatorilor sunt operatori binari, adică acești operatori necesită doi operanzi pentru a efectua o operație. Puțini operatori precum operatorul ++ (increment) sunt operatorul unar, ceea ce înseamnă că operează doar pe un singur operand.
Există, de asemenea, un operator ternar în C ++ numit Conditional Operator, care ia trei operanzi. Vom afla despre acest lucru în detaliu în partea ulterioară a tutorialului.
Tipuri de operatori în C ++
Operatorii în C ++ sunt clasificați după cum se arată mai jos:
Să explorăm fiecare tip de operator C ++ în detaliu!
Operatori aritmetici
Operatorii aritmetici sunt utilizați pentru efectuarea operațiilor matematice de bază pe operanzi.
C ++ acceptă următoarele operații aritmetice:
Operator | Binar / unar | Descriere |
---|---|---|
- | Unar | Operator de scădere - scade valoarea operandului cu 1 |
+ | Binar | Adăugarea a doi operanzi |
- | Binar | Scăderea a doi operanzi |
* | Binar | Înmulțirea a doi operanzi |
/ | Binar | Divizarea a doi operanzi |
% | Binar | Operator modul - rezultatul este restul diviziunii |
++ | Unar | Operator de creștere - crește valoarea operandului cu 1 |
Exemplul de mai jos demonstrează primii cinci operatori aritmetici în C ++
#include #include using namespace std; int main() { int op1=3,op2=4; float op3=10.1,op4=5.4; cout<<'Operands are op1 = '< Putem înțelege mai bine acest lucru folosind următorul exemplu. #include #include using namespace std; int main() { int x=4,y; y = ++x; cout<<'PreIncrement:Value of x = '<Operatori logici Operatorii logici sunt utilizați pentru evaluarea unei combinații de condiții / constrângeri pentru a obține o valoare rezultată. Rezultatul evaluării unei expresii booleene este boolean care este fie adevărat, fie fals.
C ++ acceptă următorii operatori logici:
Operator Descriere 7 L-> R <<
>> Deplasați spre stânga
Deplasați spre dreapta && Logic AND: returnează true dacă ambele condiții sunt adevărate, altfel returnează false. || OR logic: returnează adevărat dacă una dintre condiții este adevărată. Returnează fals atunci când ambele condiții sunt false. ! Logic NU: neagă condiția.
C ++ folosește o metodă de scurtcircuit pentru a evalua expresiile logice. În acest sens, C ++ trebuie să evalueze doar prima expresie / operand a expresiei logice pentru a furniza rezultatul. De exemplu, pentru operatorul AND (&&) logic, C ++ evaluează doar prima expresie. Dacă este fals, atunci rezultatul va fi fals, chiar dacă a doua condiție este adevărată.
În mod similar, pentru OR logică (||), evaluează doar prima expresie. Dacă prima expresie este adevărată, atunci rezultatul va fi adevărat, deci nu trebuie să evalueze a doua expresie.
Dat mai jos este un exemplu care arată utilizarea operatorilor logici.
#include #include using namespace std; int main() int a=10, b=8,c=12,d=14; if(!(a==0)) cout<<'a is not zero'< Ieșire:
a nu este zero
Logica ȘI este adevărată
SAU logic este adevărat
În programul de mai sus, am folosit toți cei trei operatori logici pentru a evalua expresiile și a imprima rezultatele.
Operatori relaționali
Operatorii relaționali sau de comparație sunt folosiți pentru a compara doi operanzi. Rezultatul evaluării este fie adevărat, fie fals.
C ++ acceptă următorii operatori relaționali:
Operator Descriere !EROARE! operator neașteptat '=' Evaluează dacă doi operanzi sunt egali. Returnează adevărat dacă egal altceva returnează fals. ! = (nu este egal cu) Completează operatorul „egal cu”. Returnează adevărat dacă operanzii nu sunt egali. Altfel fals. <(less than) Returnează adevărat dacă primul operand este mai mic decât al doilea. Altfel fals. <=(less than equal to) Returnează adevărat dacă primul operand este mai mic sau egal cu al doilea operand. Altfel fals. > (mai mare decât) Returnează adevărat dacă primul operand este mai mare decât al doilea. Altfel fals. > = (mai mare decât egal cu) Returnează adevărat dacă primul operand este mai mare decât egal cu al doilea. Altfel fals.
Consultați Exemplul de program de mai jos pentru a înțelege Operatorii Relaționali.
#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'< Ieșire:
a nu este egal cu b
c nu este egal cu d
(a + b) mai mic decât / egal cu (c + d)
(a-b) mai mare decât / egal cu (d-c)
În programul de mai sus, vedem utilizarea operatorilor relaționali și modul în care aceștia evaluează expresiile furnizate.
Rețineți că putem furniza nu numai valori, ci și variabile și expresii în enunțurile condiționale.
Operatori Bitwise
Operatorii bit-bit din C ++ operează pe biți din operanzii furnizați. Operatorii bit-bit se aplică numai tipurilor integrale precum întreg, caracter etc. și nu pe tipuri de date precum float, double etc.
Următoarele sunt operatorii bit-bit suportați de C ++:
Operatori Descriere & (Binar ȘI) Efectuează operația ȘI pe biții de operand 1 și operand 2. | (OR binar) Efectuează operația SAU pe biții de operand 1 și operand 2. ^ (XOR binar) Efectuează operația XOR pe biții de operand 1 și operand 2. ~ (Complement binar) Ia un operand și își inversează biții. <<( Binary left shift operator) Deplasează biții primului operand spre stânga la un număr de biți specificat de al doilea operand. >> (Operator de deplasare binar dreapta) Deplasează biții primului operand spre dreapta într-un număr de locuri specificat de cel de-al doilea operand.
Acești operatori bit-bit operează pe operanzi într-un mod bit-by-bit. Tabelele de adevăr pentru operațiile AND, OR și XOR sunt date mai jos.
Considerați a și b ca doi biți pe care urmează să fie efectuate operațiile AND, OR și XOR.
Tabelele de adevăr pentru aceleași sunt cele prezentate mai jos:
la 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
Să luăm un exemplu pentru a înțelege operațiunile Bitwise.
Fie a = 8 și b = 4
Reprezentarea binară a și b este după cum urmează:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
În exemplul de mai sus, vedem că AND bit și 8 și 4 este 0. OR bit în 8 și 4 este 12 și XOR bit în 8 și 4 este, de asemenea, 12.
Acesta este modul în care operațiile bit-bit sunt efectuate de către operatorii bit-bit.
Un exemplu care demonstrează operatorii Bitwise.
#include #include using namespace std; int main() int a=8,b=4,c; c = a&b; cout<<'Result of & : '< Ieșire:
Rezultatul lui &: 0
Rezultatul | : 12
Rezultatul lui ^: 12
Rezultat al<< by 2 bits: 32
Rezultatul >> cu 2 biți: 1
Rezultatul ~: -4
În programul de mai sus, am demonstrat utilizarea operatorilor bit-bit și am imprimat, de asemenea, ieșirea fiecărei operațiuni.
Operatori de misiune
Operatorul de atribuire „=” este folosit pentru a atribui o valoare unei variabile. LHS al operatorului de atribuire este o variabilă, iar RHS este valoarea care trebuie atribuită variabilei. Valoarea din partea dreaptă trebuie să fie de același tip cu cea a variabilei din partea stângă.
Rețineți diferența dintre operatorii „=” și „==”. Primul este operatorul de atribuire și cel mai târziu este operatorul de egalitate.
Operațiunea de atribuire are loc de la dreapta la stânga. În afară de operatorul de atribuire ‘=’, există și alte variații ale operatorului de atribuire care sunt cunoscute sub numele de „operatori de atribuire compuși”. Acești operatori efectuează o operațiune în plus față de atribuire.
Tabelul de mai jos ne oferă o descriere a acestor operatori de atribuire.
Operator Descriere = Atribuie valoarea operandului RHS la operandul LHS + = Adaugă operand RHS la operand LHS și atribuie rezultatul în operand LHS. - = Scade operandul RHS la operandul LHS și atribuie rezultatul la operandul LHS * = multiplică operandul RHS la operandul LHS și atribuie rezultatul la operandul LHS / = împarte operandul RHS la operandul LHS și atribuie rezultatul la operandul LHS
Așa cum se arată în tabelul de mai sus, Dacă x și y sunt operanzi, x + = y este echivalent cu x = x + y.
În mod similar,
x - = y este echivalent cu x = x-y.
x * = y este echivalent cu x = x * y.
x / = y este echivalent cu x = x / y.
Exemplul de programare de mai jos demonstrează acești operatori de atribuire.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Ieșire:
Introduceți variabila de intrare y: 4
Valoarea lui x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1

În exemplul de mai sus, am demonstrat alocarea, precum și operatorii de alocare compusă.
Notă: Putem combina și ceilalți operatori binari precum%,<>, &, |, ^ etc. în instrucțiuni de atribuire compuse în plus față de cele care sunt deja demonstrate.
Alți operatori
Până acum am explorat toți operatorii majori din C ++. Există mai mulți operatori C ++ suplimentari care au nevoie de atenția noastră.
Acești operatori includ:
cum să vizualizați fișiere de date pe Windows
(i) dimensiunea operatorului
sizeof este un operator unar care este utilizat pe scară largă în C și C ++. Sizeof returnează dimensiunea operandului său. Valoarea returnată este de obicei un tip integral nesemnat notat cu „size_t”.
Operatorul Sizeof are multe utilizări în limbile C și C ++. Poate fi folosit pentru a afla dimensiunea variabilelor, tablourilor sau expresiilor și chiar pentru a aloca blocurile de memorie.
(ii) Operator ternar condiționat
Operatorul condițional din C ++ poate fi folosit ca înlocuitor pentru instrucțiunea if-else.
Sintaxa generală pentru operatorul condițional este:
Condiție? expresie1: expresie2;
Dacă condiția este adevărată, expresia 1 va fi evaluată. Dacă condiția este falsă, atunci expresia2 va fi evaluată.
Vă rugăm să rețineți că expresia1 și expresia2 trebuie să aibă aceleași tipuri de date pentru a evita potențialele erori.
Citire sugerată => Operator ternar în C #
(iii) Operator de virgulă
Operatorul de virgulă care este reprezentat ca un simbol „,” poate fi utilizat atât ca operator, cât și ca separator.
Ca operator, se utilizează o virgulă atunci când există mai multe expresii de evaluat. LHS este atribuită doar expresiei din dreapta.
De exemplu,ia în considerare următoarea expresie.
x = (y = 4, y + 1);
În această expresie, avem două expresii în partea dreaptă separate prin virgulă. Aici virgula acționează ca un operator. În primul rând, va fi evaluată expresia, y = 4. Apoi următoarea expresie y + 1 va fi evaluată folosind rezultatul primei expresii, adică y = 4. Astfel valoarea y + 1 va fi 5 și această valoare va fi atribuită lui x.
Ca separator, o virgulă poate fi utilizată oriunde pentru a separa definițiile, lista de parametri etc.
(iv) Operator de acces la membri
Există doi operatori care sunt utilizați pentru a accesa membrii individuali ai claselor, structurilor sau uniunilor din C ++. Acestea sunt operatorul punct (.) Și săgeata (->). Vom învăța în detaliu acești operatori atunci când învățăm programarea orientată pe obiecte în C ++.
Exemplul de mai jos demonstrează utilizarea dimensiunii, a virgulei și a operatorului condiționat.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Ieșire:
Valoarea x = 7
Variabila x este mai mare de 5
sizeof (x): 4 sizeof (y): 4
Captura de ecran pentru același lucru este dată mai jos.

După cum se arată în programul de mai sus, mai întâi avem două variabile declarate și separate printr-o virgulă. (virgulă ca separator). Apoi, avem un operator de virgulă cu două expresii. După cum putem vedea din ieșire, valoarea expresiei din dreapta este atribuită variabilei x. Apoi, demonstrăm operatorul condițional pentru a evalua dacă x este mai mic de 5.
În cele din urmă, demonstrăm utilizarea operatorului sizeof. Aici folosim operatorul sizeof pentru a obține dimensiunea variabilelor x și y. Deoarece ambele sunt variabile întregi, dimensiunea returnată este de 4 octeți.
(v) Precedența și asociativitatea operatorului
Am văzut deja aproape toți operatorii C ++ și știm că pot fi folosiți în expresii pentru a efectua operațiuni specifice. Dar expresiile pe care le-am văzut în exemple sunt simple și directe. Cu toate acestea, în funcție de cerințele noastre, expresiile tind să devină din ce în ce mai complexe.
Astfel de expresii complexe vor avea mai mult de un operator și mai mulți operanzi. Într-o astfel de situație, trebuie să evaluăm care operator trebuie evaluat mai întâi.
De exemplu, ia în considerare următoarea expresie.
x = 4 + 5/3;
Aici avem operatori + și / și trebuie să decidem ce expresie va fi evaluată mai întâi. În termeni matematici, știm că împărțirea va fi efectuată înainte de adăugare. Astfel, expresia va deveni x = 4 + (5/3) = 5.
Dar când compilatorul se confruntă cu o astfel de situație, trebuie să avem și un mecanism similar pentru a decide ordinea operațiilor, astfel încât să poată evalua corect expresia.
Această ordine în care sunt evaluați operatorii dintr-o expresie compusă se numește „Precedența” operatorului. C ++ are prioritate definită pentru toți operatorii și operatorii cu prioritate mai mare sunt evaluați mai întâi.
Ce se întâmplă când avem doi operatori unul lângă altul într-o expresie cu aceeași prioritate? Aici intervine asociativitatea unui operator.
Asociativitatea spune compilatorului dacă trebuie să evalueze o expresie în secvența de la stânga la dreapta sau de la dreapta la stânga. Astfel, folosind precedența și asociativitatea unui operator putem evalua eficient o expresie și putem obține rezultatul dorit.
C ++ oferă un tabel format din prioritate și asociativitate a diferiților operatori pe care îi folosește.
Acest tabel este prezentat mai jos.
Precedenta / Asociativitate Operator Descriere 1 Niciuna ::
:: Operator rezoluție scop
(unar)
(binar) 2 L-> R ()
()
()
{}
tip()
tip{}
()
.
->
++
––
tipid
const_cast
dinamic_cast
reinterpret_cast
static_cast Paranteze
Apel funcțional
Inițializare
Inițializare uniformă (C ++ 11)
Distribuție funcțională
Distribuție funcțională (C ++ 11)
Indice matrice
Acces membru de la obiect
Acces membru din obiect ptr
Post-increment
Postdecrement
Informații despre tipul de rulare
Aruncați const
Distribuție verificată de tip în timpul rulării
Aruncați un tip la altul Distribuiți verificarea tipului în timpul compilării 3 R-> L +
-
++
––
!
~
(tip)
mărimea
&
*
nou
nou()
șterge
șterge() Unar mai mult
Minus unar
Preincrementare
Pre-decret
Logic NU
Bitwise NU
Distribuție în stil C
Dimensiune în octeți
Adresa
Dereferință
Alocare dinamică a memoriei
Alocare dinamică a matricei
Ștergerea dinamică a memoriei
Ștergerea dinamică a matricei 4 L-> R -> *
. * Selector de pointer membru
Selector de obiecte membre 5 L-> R *
/
% Multiplicare
Divizia
Modulul 6 L-> R +
- Plus
Scădere 8 L-> R <
<=
>
> = Comparație mai mică decât
Comparație mai mică sau egală
Comparație mai mare decât
Comparație mai mare sau egală 9 L-> R !EROARE! caracter ilegal '!' Egalitate
Inegalitate 10 L-> R & Bitwise ȘI 11 L-> R ^ Bitwise XOR 12 L-> R | OR bit 13 L-> R && Logic ȘI 14 L-> R || OR logic 15 R-> L ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Condițional (a se vedea nota de mai jos)
Misiune
Alocarea multiplicării
Atribuirea diviziei
Alocarea modulului
Alocarea suplimentară
Alocarea de scădere
Deplasarea în stânga a bitului
Alocarea la dreapta a comutării la dreapta
Alocare bit și bit
Alocare bitwise SAU
Alocarea bitwise XOR 16 R-> L arunca Aruncă expresie 17 L-> R , Operator de virgulă
Note:
- Nivelul de precedență 1 este cel mai înalt nivel de prioritate, iar nivelul 17 este cel mai scăzut. Operatorii cu un nivel de prioritate mai mare sunt evaluați mai întâi.
- L-> R înseamnă asociativitate de la stânga la dreapta.
- R-> L înseamnă asociativitate de la dreapta la stânga.
Concluzie
Aici este vorba despre operatorii din C ++.
Am discutat aproape toți operatorii. Unii operatori specifici care sunt prezenți în tabelul de prioritate de mai sus, pe care nu l-am discutat, vor fi discutați în funcție de subiectele pe care le acoperim în tutorialele noastre viitoare.
=> Consultați aici pentru a explora lista completă de tutoriale C ++
Lectură recomandată
- Unix Shell Script Exemple de operatori aritmetici și booleni
- Operatori Python
- Operatori noi / ștergere în C ++ cu exemple
- Tipuri de date Python
- Enunțuri condiționate Unix: Dacă apoi altfel și Operatori relaționali
- Tutorial Python DateTime cu exemple
- Tutorial de injecție HTML: tipuri și prevenire cu exemple
- Tăiați comanda în Unix cu exemple