Operator unar în C++

Operator Unar In C



În C++, un operator unar este un operator care funcționează doar pe un singur operand. Operatorii unari joacă un rol crucial în C++, permițând manipularea valorii asociate cu o variabilă sau expresie singulară. Acești operatori versatili pot fi utilizați în diverse contexte, cum ar fi creșterea sau decrementarea unei variabile, schimbarea semnului unei valori numerice sau efectuarea unei negații logice. Acest articol explorează operatorii unari din C++, acoperind tipurile și aplicațiile acestora și oferind mai multe exemple pentru o mai bună înțelegere.

C++ suportă mai mulți operatori unari, fiecare având un scop unic în manipularea variabilelor. Să începem cu operatorii de creștere și decrementare care sunt utilizați în mod obișnuit în bucle și diverși algoritmi.

Exemplul 1: Operatori de creștere (++) și decreștere (–).

Operatorii unari de creștere (++) și de decrementare (–) sunt instrumente fundamentale în C++ pentru modificarea valorii unei variabile fie prin creșterea, fie prin scăderea acesteia cu 1, respectiv. Operatorul de creștere (++) adaugă 1 la valoarea variabilei, în timp ce operatorul de decrementare (–) scade 1. Acești operatori pot fi aplicați variabilelor întregi, virgulă mobilă și pointer, oferind flexibilitate în utilizarea lor.







Să explorăm acești operatori printr-un exemplu practic:



#include
folosind spatiu de nume std ;

int principal ( )
{

int tejghea = 0 ;

// Operatorul de creștere
cout << 'Valoarea initiala: ' << tejghea << endl ;

tejghea ++ ;
cout << „Valoare după creștere:” << tejghea << endl ;

// Operatorul de decrementare
tejghea -- ;
cout << „Valoare după decrement:” << tejghea << endl ;

întoarcere 0 ;
}

Acest program simplu C++ include biblioteca de flux de intrare/ieșire necesară cu „#include ”. În cadrul funcției „main()”, instanțiăm o variabilă întreagă numită „contor” și îi atribuim o valoare inițială de 0. Folosind instrucțiunea „cout”, imprimăm valoarea inițială a „contorului” pe consolă, furnizând o bază pentru demonstrația noastră. Mergând înainte, operatorul de increment (counter++) este utilizat pentru a crește valoarea variabilei „contor” cu 1.



După această operație, valoarea actualizată a „contorului” este afișată folosind o altă instrucțiune „cout”. Ulterior, folosim operatorul de decrement (counter—) pentru a scădea valoarea „counter” cu 1. Rezultatul este afișat ulterior pe consolă. În cele din urmă, programul se încheie cu „întoarcerea 0”; declarație care indică o execuție cu succes.





Imaginea de ieșire arată valoarea inițială, valoarea după creștere și valoarea decrementată.



Exemplul 2: Operatori pozitivi (+) și negativi (-).

În timp ce operatorul unar pozitiv este rar folosit, operatorul negativ este fundamental pentru schimbarea semnului unei variabile.

#include
Folosind spatiu de nume std ;

int principal ( ) {
int valoare pozitivă = 10 ;
int valoare negativă = - valoare pozitivă ;

cout << „Valoare pozitivă:” << valoare pozitivă << endl ;
cout << „Valoare negativă:” << valoare negativă << endl ;

întoarcere 0 ;
}

Inițializam două variabile întregi pentru acest exemplu de cod, care sunt „positiveValue” și „negativeValue”. „Valoarea pozitivă” este atribuită cu valoarea 10. Ulterior, declarăm „Valoare negativă” și o atribuim cu negația „Valoare pozitivă” folosind operatorul unar minus. Acest operator schimbă efectiv semnul valorii inițiale. Apoi folosim declarația „cout” pentru a afișa atât ieșirea pozitivă, cât și negativă pe consolă. În cele din urmă, programul returnează 0, ceea ce indică finalizarea cu succes a funcției principale.

Când este executat, acest program scoate valorile pozitive și negative.

Exemplul 3: Operator logic NOT (!).

Operatorul unar în C++, notat cu „!” simbol, este cunoscut ca operatorul logic NOT. Este conceput pentru a inversa valoarea de adevăr a unei expresii date. Funcționează pe un singur operand care este de obicei o expresie logică sau o condiție. Operația logică NOT produce un rezultat „adevărat” atunci când operandul este „fals” și dă un rezultat „fals” atunci când operandul este „adevărat”.

Iată un exemplu simplu care demonstrează utilizarea operatorului logic NOT:

#include
folosind spatiu de nume std ;

int principal ( ) {
bool este adevarat = Adevărat ;
bool este fals = fals ;

bool resultNutTrue = ! este adevarat ;
bool resultNotFalse = ! este fals ;

cout << „Valoare originală:” << este adevarat << ', După NU: ' << resultNutTrue << endl ;
cout << „Valoare originală:” << este fals << ', După NU: ' << resultNotFalse << endl ;

întoarcere 0 ;
}

În acest exemplu, declarăm două variabile booleene, „isTrue” și „isFalse”. Apoi aplicăm operatorul logic NOT fiecărei variabile, stocând rezultatele în „resultNotTrue” și, respectiv, „resultNotFalse”. Programul imprimă ulterior valorile originale și rezultatele operației logice NOT pentru ambele variabile.

La executarea acestui program, vom observa că operatorul logic NOT inversează valoarea de adevăr a lui „isTrue” (setat inițial la true), făcând-o falsă. În mod similar, inversează valoarea de adevăr a lui „isFalse” (fals inițial), rezultând adevărat.

Ieșirea ilustrează clar inversarea valorilor de adevăr care sunt realizate de operatorul logic NOT.

Exemplul 4: Operator pe biți NOT (~).

Operatorul NOT pe biți (~) în C++ este un operator unar care efectuează negația pe biți a fiecărui bit al operandului său. Funcționează cu tipuri de date fundamentale, în special cu cele integrale, cum ar fi numerele întregi. Rezultatul este obținut prin inversarea fiecărui bit individual din operand, conversia 0 în 1 și 1 în 0.

Pentru a ilustra utilizarea acestuia, luați în considerare următorul fragment de cod:

#include
folosind spatiu de nume std ;

int principal ( ) {
int originalValue = 5 ;

int rezultat pe bițiNu = ~originalValue ;

cout << „Valoare originală:” << originalValue << ', După Bitwise NOT: ' << rezultat pe bițiNu << endl ;

întoarcere 0 ;
}

În acest exemplu, declarăm o variabilă întreagă „originalValue” cu valoarea „5”. În continuare, utilizăm operatorul NOT pe biți (~) pe această variabilă. Rezultatul acestei variabile este stocat în „resultBitwiseNot”. Programul imprimă apoi valoarea originală și rezultatul după operațiunea NOT pe biți utilizând instrucțiunea „cout”.

Când rulăm acest program, vom vedea că operatorul NOT inversează fiecare bit al reprezentării binare a „originalValue”, rezultând o nouă valoare.

Exemplul 5: Adresă și operatori de direcție

Operatorul de adresă, notat cu simbolul „&”, are scopul de a regăsi locația de memorie a unei variabile. Returnează un pointer către variabilă care permite un acces indirect la valoarea acesteia. Operatorul de indirectare sau dereferință (*) obține valoarea care este stocată în locația de memorie care este specificată de un pointer. Oferă o modalitate de a lucra indirect cu datele reale printr-un pointer.

Să înțelegem conceptul cu un exemplu:

#include
folosind spatiu de nume std ;

int principal ( ) {
int valoare = 99 ;

cout << „Valoare originală:” << valoare << endl ;

int * ptr = & valoare ;
cout << „Adresă de memorie:” << ptr << endl ;

int retrivedValue = * ptr ;
cout << „Valoare preluată:” << retrivedValue << endl ;

întoarcere 0 ;
}

Acest cod exemplifica utilizarea operatorilor de adresă și indirecte. Mai întâi, o variabilă întreagă numită „valoare” este inițializată cu valoarea 99. Valoarea inițială a „valoare” este apoi trimisă la consolă. Ulterior, este declarată o variabilă pointer „ptr”, iar operatorul de adresă (&) este folosit pentru a atribui adresa de memorie a „valorii” lui „ptr”. Programul scoate apoi această adresă de memorie, prezentând funcționarea de bază a operatorului „adresă”.

După aceea, este declarată o nouă variabilă întreagă care este „retrievedValue”, iar operatorul de indirectizare (*) este folosit pentru a prelua valoarea care este stocată la adresa de memorie indicată de „ptr”. Valoarea preluată este apoi trimisă la consolă.

Concluzie

Acest articol a oferit o explorare cuprinzătoare a operatorilor unari în C++. Am început prin a clasifica operatorii unari în diferite tipuri, inclusiv aritmetici, logici, pe biți și cei care țin de adresă și indirecte. Au fost exemplificate situații din lumea reală pentru a demonstra aplicarea utilă a acestor operatori. Acești operatori joacă roluri esențiale în programarea C++, ceea ce permite dezvoltatorilor să lucreze eficient cu pointerii și să gestioneze memoria.