Sunteți pe pagina 1din 2

Şef lucrări Morariu-Gligor Radu PUC – Laborator nr.

4 1/2

LABORATOR NR. 4 - Operatori


Prioritatea operatorilor ne arată cum se evaluează expresiile care conţin un număr de doi sau mai
mulţi operatori aplicaţi unui acelaşi operand sau unor operanzi diferiţi, în situaţia când nu există paranteze
care să impună o anumită ordine a operaţiilor. Asociativitatea ne arată cum se evaluează o expresie în
care apare un acelaşi operator de mai multe ori.
Categoria Operatori Semnificaţie Asociativitatea
1. Prioritate maximă () Apel de funcţie de la stânga la dreapta
[] Expresie cu indici
2. Operatori unari ! Negare logică de la dreapta la stânga
~ Negare bit cu bit
+ - Plus şi minus unari
++ -- Incrementare / decrementare
& Operatorul adresă
* Operatorul de indirectare
sizeof Dimens. operandului (octeţi)
(tip) Conversie de tip
3. Operatori de * Înmulţire de la stânga la dreapta
multiplicare / Împărţire
% Restul împărţirii
4. Adunare, scădere + - Plus şi minus binari de la stânga la dreapta
5. Deplasări << >> Deplasări bit cu bit de la stânga la dreapta
6. Relaţionali < <= > >= Mai mic, mai mic sau egal, mai de la stânga la dreapta
mare, mai mare sau egal
7. Egalitate == != Egal, diferit de la stânga la dreapta
8. Operatori logici & ŞI logic bit cu bit de la stânga la dreapta
la nivel de bit ^ SAU EXCLUSIV bit cu bit
| SAU logic bit cu bit
9. Operatori logici && ŞI logic de la stânga la dreapta
|| SAU logic
10. Operatorul ?: de la dreapta la stânga
condiţional ternar
11. Operatori de = Atribuire simplă de la dreapta la stânga
atribuire *= /= %= Atribuire cu produs, cât, rest
+= -= Atribuire cu sumă, diferenţă
&= ^= |= Atrib. cu şi, sau exclusiv, sau
<<= >>= Atrib. cu deplasare la stg., dr.
12. Virgulă , Evaluare op1, op2 de la stânga la dreapta
Valoarea expresiei este op2.
Program exemplu nr. 1: Programul ilustrează modul în care se calculează fracţia:
1 1 1.0 1
f = f1= f2= f3=
3 3 3 3
2+ 2+ 2+ 2+
5 5 5 5
4+ 4+ 4+ 4+
7 7 7 7
6+ 6+ 6+ 6+
9 9 9 9
8+ 8+ 8+ 8+
10 10 10 10.0
Expresia de mai sus a fost scrisă în trei feluri (două greşite şi unul corect). Rezultatele sunt în
concordanţă cu modul în care au fost scrise expresiile.
#include<stdio.h>
#include<conio.h>
void main(void)
{ clrscr();
float f1, f2, f3;
f1 = 1 / (2 + 3 / (4 + 5 / (6 + 7 / (8 + 9 / 10) ) ) ); // f1 = 0.0000000
f2 = 1. / (2 + 3 / (4 + 5 / (6 + 7 / (8 + 9 / 10) ) ) ); // f2 = 0.5000000
f3 = 1 / (2 + 3 / (4 + 5 / (6 + 7 / (8 + 9 / 10.) ) ) ); // f3 = 0.3797452
printf("\n f1 = %10.7f f2 = %10.7f f3 = %10.7f",f1,f2,f3);
getch();
}
Şef lucrări Morariu-Gligor Radu PUC – Laborator nr. 4 2/2

Program exemplu nr. 2: Calculul valorii funcţiei: Program exemplu nr. 4: Exemplu de utilizare a
⎧ x − 8 daca x < 1 operatorilor logici la nivel de bit.
y=⎨ 2
⎩ x + 2 x + 3 daca x ≥1 #include<stdio.h>
#include<conio.h>
#include<stdio.h> #include<stdlib.h>
#include<conio.h> void main(void)
main() { int a,b,c; char sa[16],sb[16], sc[16]; clrscr();
{ float x,y; clrscr(); printf("\n a = ");scanf("%d",&a);
printf(“\n Introdu x:”); scanf(“%f”,&x); printf("\n b = ");scanf("%d",&b);
y = (x>=1) ? x*x+2*x+3 : x-8; itoa(a,sa,2); itoa(b,sb,2);
printf(“\n x = %f \t y = %f”,x,y); printf("\n a = %3d(10) \t a = %16s(2)",a,sa);
getch(); printf("\n b = %3d(10) \t b = %16s(2)",b,sb);
} c = a & b; itoa(c,sc,2);
printf("\n c = %3d(10) \t c = %16s(2)",c,sc);
getch();
}
Program exemplu nr. 3: Program care ilustrează Program exemplu nr. 5: Ilustrarea modului în care
calculul câtului şi a restului la împărţirea a două acţionează operatorii de deplasare la nivel de bit.
valori întregi.
#include<stdio.h>
#include<stdio.h> #include<conio.h>
#include<conio.h> #include<stdlib.h>
main() void main(void)
{ int a,b,c,r; clrscr(); { int a,b,c,n; char sa[16],sb[16],sc[16]; clrscr();
printf(“\n Introduceti a:”); scanf(“%d”,&a); printf("\n Introdu a = ");scanf("%d",&a);
printf(“\n Introduceti b:”); scanf(“%d”,&b); printf("\n Introdu n = ");scanf("%d",&n);
c=a/b; r=a%b; itoa(a,sa,2);
printf(“\n %d = %d x %d + %d ”,a,b,c,r); printf("\n a = %3d(10) \t a = %16s(2)",a,sa);
getch(); b = a << n; itoa(b,sb,2);
} printf("\n b = %3d(10) \t b = %16s(2)",b,sb);
c = a >> n; itoa(c,sc,2);
printf("\n c = %3d(10) \t c = %16s(2)",c,sc);
getch();
}

Exerciţiu nr. 1: Exerciţiu nr. 2:


Variabila x este de tip real. Care din Scrieţi în limbajul C următoarea expresie
următoarele expresii are valoarea 1 dacă şi numai ⎧ 5 π
⎪ x + 3 ⋅ x − 8 ⋅ x + 4 ⋅ x − 12 x≥
3 2
dacă numărul real memorat în variabila x aparţine
intervalului (5,8]? ⎪ 2
a=⎨
a) ( x < 8 ) && ( x > 5 ) (
⎪4 x + 5 ⋅ x − 3 ⋅ cos(30°)
3 2
) x<
π
b) ( x <= 8 ) | | (x > 5 ) ⎪⎩ x − tan (45°) 2
c) ( x > 8 ) | | (x <= 5 )
d) ( x <= 8 ) && (x > 5 )
utilizând operatorul condiţional ternar.

Teme:
⎧ x 2 + 2 x + 3 daca x ≥ 1

1. Să se scrie un program pentru calculul valorilor funcţiei: y = ⎨ x − 8 daca − 1 < x < 1
⎪ 3
⎩ x − 6 x + 8 daca x ≤ −1
2. Să se precizeze condiţiile necesare prin care se verifică dacă trei valori (a, b, c) pot fi laturile unui
triunghi dreptunghic.
3. Se consideră trei puncte în plan: Pi ( xi , yi ) i = 1,3 . Să se calculeze aria triunghiului construit cu cele
x1 y1 1
D
trei puncte: A = , unde D = x2 y2 1 .
2
x3 y3 1

S-ar putea să vă placă și