Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Operatori

c


Operatori

Notiuni:

operator, operand, operatori unari / binari / ternari, operatori aritmetici / relationali / logici / bitwise / de atribuire / de incrementare / de decrementare / de apel / de indexare / de indirectare / de selectie / de conversie explicita / de adresa de dereferentiere / de alocare, sizeof, operator conditional, operator virgula, prioritatea operatorilor, asociativitatea operatorilor.



Operatorii specifica actiuni ce sunt efectuate asupra operanzilor (constante sau variabile).

Operatorii sunt clasificati în functie de numarul operanzilor în: unari, binari, ternari.

În functie de tipul operanzilor si de scopul expresiei în care sunt folositi, operatorii pot fi

a). Aritmetici

unari:

- (de semn)

binari, aditivi:

(add)    - (subtract)

binari, multiplicativi:

(multiply)    / (divide) % (modulo)

Operatorul % (modulo) se aplica doar operanzilor de tip întreg si are ca rezultat restul împartirii întregi a operanzilor.

Exemplu: 7 % 4 va avea valoarea 3.

Operatorul    / (divide) poate avea atât operanzi întregi cât si reali. Daca ambii operanzi sunt întregi, rezultatul sau va fi câtul împartirii întregi a operanzilor. Daca cel putin un operand este real, rezultatul va fi împartirea reala a operanzilor.

Exemplu: 7 / 4 are rezultatul 1;

7.2 / 4 are rezultatul 1.8;

b). Relationali

< <= > >= == (egalitate) (diferit de)

Se aplica în compararea valorilor operanzilor. Expresiile cu operanzi relationali vor avea valoarea 1 daca expresia este adevarata si 0 daca este 11211k1024l falsa.

c). Logici

negatie) && (si) || (sau)

Sunt folositi în expresii logice.

În C/C++ valorile de adevar sunt codificate numeric astfel 0 pentru fals", 0 pentru adevarat

x

!x

0

  Tabelele de adevar pentru operatorii logici sunt

x

y

x || y

0

0

0

0

 


d). Bitwise

(complement fata de 1, operator unar), & (si), | (sau), ^ (sau exclusiv), << (deplasare spre stânga), >> (deplasare spre dreapta).

Operatorii bitwise realizeaza transformari la nivelul bitilor. Ei reprezinta aplicarea legilor logice pentru fiecare bit component al unui numar.

Tabelele logice ale operatorilor bitwise sunt

x

~x

 


Exemple:    x = 85 = 1010101(2) , y = 123 = 1011011(2)

~x = ~85 = ~1010101 = 0101010

x & y = 1010101 &

x | y = 1010101 |

1011011

1011111

Observatie: Daca operatorii &, | sunt aplicati unor operanzi de lungime (numar de biti) diferita, se va completa operandul de lungime mai mica, cu 0 la stânga, pâna la lungimea celuilalt operand.

Sintaxa operatorilor de deplasare este: <operand> << <nr_biti>

<operand> >> <nr_biti>

Operatorii de deplasare (shift) muta bitii operandului spre stânga dreapta cu un numar dat de biti. Prin mutare bitii din partea stânga / dreapta se pierd iar în partea opusa deplasarii se adauga 0. Magnitudinea ramâne aceeasi.

Exemplu

e). De atribuire

(atribuire simpla += -= *= /= %= &= |= ^= <<= >>= (atribuiri compuse)

Folositi pentru a da unei variabile o valoare

Observati existenta unor operatori de atribuire compusi dintr-un operator aritmetic sau bitwise si operatorul simplu de atribuire. Semnificatia lor este urmatoarea

Fiind dat un operator compus <op>= si doua variabile x si y, expresia x = x <op> y este echivalenta cu expresia x <op>= y

f). De incrementare/decrementare

(incrementare)    -- (decrementare)

Acesti operatori sunt unari si realizeaza cresterea descresterea cu o unitate a operandului. Pot fi folositi în forma prefixata (++operand / --operand) sau în forma postfixata (operand++ / operand--). Diferenta dintre cele doua forme apare în expresii în forma prefixata valoarea este mai întâi incrementata si apoi folosita în expresie iar în forma postfixata valoarea este folosita si apoi incrementata.

Observatie Acesti operatori realizeaza modificarea variabilei fara necesitatea unei atribuiri. Fiind data o variabila x, instructiunea x = x + 1 este echivalenta cu instructiunea ++x sau cu x++

g). De apel

Folosit în apelul unei functii.

Sintaxa lui este <nume_functie>(<lista_parametrii>);

h). De indexare

Folosit pentru utilizarea unui element dintr-un tablou.

Sintaxa este <nume_tablou>[<indice>]

<nume_tablou>[<indice_dim1>].[<indice_dimn>]

i). De indirectare

->

Folosit pentru a accesa un membru al unei structuri prin intermediul unui pointer.

Sintaxa: <nume_pointer> -> <nume_membru>

j). De selectie

Folosit pentru a accesa un membru al unei structuri prin intermediul unei variabile.

Sintaxa: <nume_variabila> . <nume_membru>

k). De conversie explicita

(typecast)

Este folosit pentru a realiza conversia unei variabile la alt tip de date decât cel din declaratie.

Sintaxa (<tip_nou>) <nume_variabila>

Observatie: Aceasta conversie este efectuata doar în cadrul expresiei în care este folosit operatorul. Conversia nu se pastreaza în afara expresiei.

l). De adresa

&

Folosit pentru a obtine adresa unei variabile. Sintaxa este &<nume_variabila>

m). De dereferentiere

Folosit pentru a obtine valoarea de la adresa indicata de un pointer. Sintaxa este *<nume_pointer>

n). De alocare

new delete

Folositi în alocarea dinamica a memoriei.

Sintaxele sunt <pointer> = new <tip>;

<pointer> = new <tip>[<dimensiune_1>].[<dimensiune_n>];

delete <pointer>;

Observatie

  • A doua sintaxa a lui new este folosita pentru a aloca tablouri.
  • Nu uitati sa dezalocati (delete) memoria alocata cu new daca nu mai este folosita.

o). Sizeof

sizeof

Operatorul sizeof returneaza dimensiunea în octeti a unui tip de date.

Sintaxa: sizeof(<tip_de_date> | <nume_variabila>)

Observatie: Sintaxa scrisa în forma de mai sus reprezinta scrierea prescurtata (si mai corecta) a doua sintaxe sizeof(<tip_de_date>) si sizeof(<nume_variabila>). Caracterul | are semnificatia "sau

p). Operatorul conditional

Este singurul operator ternar din C. Sintaxa lui este:

<expresie_conditionala>?<instructiune_adevarat>:<instructiune_fals>

Expresia conditionala va fi evaluata, daca este adevarata se executa prima instructiune iar daca este falsa se executa a doua instructiune.

q). Operatorul virgula

Folosit pentru a lega doua instructiuni într-o singura instructiune.

Sintaxa: <instructiune_1>, <instructiune_2>;

<instructiune_1>, ., <instructiune_n>;

Într-o expresie cu mai multi operatori, ordinea de evaluare este data de prioritate si asociativitate. Prioritatea este structurata pe mai multe nivele iar ordinea de evaluare pentru operatorii de pe acelasi nivel este data de asociativitate. Pentru a modifica explicit ordinea de evaluare se pot folosi parantezele rotunde.

Tabel - prioritatea si asociativitatea operatorilor

Prioritate

Operator

Asociativitate

[ ] -> .

! ~ + - ++ -- * & (typecast) sizeof new delete

<< >>

< <= > >=

&

&&

= += -= *= /= %= &= ^= |= <<= >>=



Document Info


Accesari: 1535
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )