Sunteți pe pagina 1din 4

In cursul trecut In cursul de astazi

• Functia de iesire scanf() • Operatorii de atribuire

• Alte functii de intrare/iesire • Operatorul conditional, operatorul dimensiune


• Operatorii de fortare a tipului, operatorul virgula
• Operatorii aritmetici
• Operatorii paranteza
• Operatorii de incrementare/decrementare
• Alti operatori
• Operatorii booleeni
• Precedenta si asociativitatea operatorilor

PCLP4 - 1 PCLP4 - 2

Operatori de atribuire (1) Operatori de atribuire (2)


1. Atribuire simpla = 2. Atribuire compusa op=
unde op poate fi: /, *, %, -, +, <<, >>, &, ^, |
v = expresie
si unde:
ex. a = 17; v op= expresie ≡ v = v op (expresie)
pi = 3.14; ex.:
tensiune = rezistenta * curent; i += 9; ≡ i = i + 9;
i *= j +7; ≡ i = i * (j + 7);
v = a + v1 = b + c;
int a = 9;
Obs. - asociativitate de la dreapta la stanga a >>= 2; ≡ a = a >> 2; → a=2

PCLP4 - 3 PCLP4 - 4

1
Operatori de atribuire (3) Operatorul conditional (1)
Exemplu: Sa se calculeze valorile expresiilor 2x2+3x si expresie1 ? expresie2 : expresie3
2x2+3x-10 pentru x citit de la consola. - expresie1 este o conditie
#include <stdio.h> ex. int a = 9, b = 14;
void main() b = (b>a)?(a+1):(a-1);
{ double x, y; Exemplul 1: Afisarea valorii absolute a unui numar.
printf(″introduceti numarul:″); #include <stdio.h>
scanf(″%lf″, &x); void main()
printf(″x=%lf, y=2*x*x+3*x=%lf\n″, x, y=2*x*x+3*x ); { int a;
y -= 10; scanf(″%d″, &a);
printf(″x=%lf, y=2*x*x+3*x-10=%lf\n″, x, y); printf(″a=%d\tabs(a)=%d\n″, a, a<0 ? –a : a);
} }
PCLP4 - 5 PCLP4 - 6

Operatorul conditional (2) Operatorul conditional (3)


Exemplul 2: Sa se afiseze minimul dintre valorile a Exemplul 3: Sa se afiseze minimul dintre valorile
doua numere intregi citite de la consola. absolute a doua numere intregi citite de la consola.
#include <stdio.h> #include <stdio.h>
void main()
void main()
{ int x, y, a, b;
{ int x, y; printf(″introduceti numerele:″);
printf(″introduceti numerele:″); scanf(″%d%d″, &x, &y);
scanf(″%d%d″, &x, &y); printf(″x=%d, y=%d, abs(x)=%d, abs(y)=%d\n″,x, y,\
printf(″x=%d, y=%d, min(x,y)=%d\n″,x, y, x<y?x:y); a=x<0?–x:x, b=y<0?-y:y);
} printf(″min( abs(x),abs(y))=%d\n″, a<b?a:b);
}
PCLP4 - 7 PCLP4 - 8

2
Operatorul dimensiune Operatorul de fortare a tipului (1)
- operator unar cu precedenta mare - operator unar cu precedenta mare
sizeof data (tip) operand
sizeof (tip) Exemplul 1: Calculeaza radacina patrata a unui
ex.1 int x, y; numar intreg citit de la consola.
y 2
printf(″y = %d\n″, y = sizeof x); #include <stdio.h>
#include <math.h>
ex.2 double x[8];
a 8
void main()
int a, b; double sqrt(double);
{ long int nr;
a = sizeof x[4];
b 64 printf(″introduceti numarul:″);
b = sizeof x;
scanf(″%ld″, &nr);
ex.3 a = sizeof (char); a 1 printf(″nr=%ld, sqrt(nr)=%lf\n″, nr, sqrt((double)nr);
PCLP4 - 9
} PCLP4 - 10

Operatorul de fortare a tipului (2) Operatorul virgula


Exemplul 2: Afiseaza valoarea expresiei (x+1)/x cu 8 expresie1 , expresie2 , expresie3, …, expresieN
zecimale pentru un numar intreg citit de la consola. Exemplu: Sa se afiseze maximul dintre valorile absolute a doua
numere intregi citite de la consola.
#include <stdio.h> #include <stdio.h>
void main() void main()
(x+1)/x este intreg !!!
{ long int x; { int x, y, a, b;
printf(″introduceti numarul:″); printf(″introduceti numerele:″);
scanf(″%ld″, &x); scanf(″%d%d″, &x, &y);
printf(″x=%ld, (x+1)/x=%.8lf\n″, x, ((double)x+1)/x; printf(″x=%d, y=%d, max( abs(x),abs(y))=%d\n″, x,\
} y, ((a=x<0?–x:x), (b=y<0?-y:y), (a>b?a:b)));
}
PCLP4 - 11 PCLP4 - 12

3
Operatorii paranteza Alti operatori
(expresie) • operatorul adresa (de referentiere) – &
- au prioritatea cea mai mare • operatorul de indirectare (de dereferentiere) – *
- impun ordinea efectuarii operatiilor • operatorii de accesare a componentelor unei
- nu se aplica operatorilor de incrementare/decrementare structuri – . si ->
si operatorului adresa: • operatorii unari + si -
(a+10)++; --(x+y); &(i+j); b= +a; b = -a
ex.: int x, *pa, a[10];
[expresie]
pa = &a[7];
- utilizate pentru indicii tablourilor (op. de indexare) x = *pa;
ex.: a[7]; a[2*i+j] *&x;
PCLP4 - 13 PCLP4 - 14

Precedenta operatorilor Asociativitatea operatorilor


( ) [ ] . ->
(tip) sizeof ++ -- ! ~ + - & * ←op.unari • operatorii unari, de atribuire si cel conditional au
* / % asociativitatea de la dreapta la stanga
+ -
<< >> . (tip) sizeof ++ -- ! ~ + - & *
< <= > >= = += -= *= /= %= <<= >>= &= |= ^=
== !=
& ?:
^
|
&& • ceilalti operatori au asociativitatea de la stanga la
|| dreapta
?:
= += -= *= /= %= <<= >>= &= |= ^=
,
PCLP4 - 15 PCLP4 - 16

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