Documente Academic
Documente Profesional
Documente Cultură
2016/2017 - Suceava
ž
În limbajul C putem depune în fluxul de ieşire valorile unor expresii
aparţinând unor tipuri primitive şi anume:
• caractere,
• întregi,
• reali şi
• şiruri de caractere.
C
număr minim de cifre afişate
Limbajul %lf %le double
[ Scrierea cu
%Lf %Le long double
C
/* afisare valoare pe 10 pozitii, aliniata la dreapta si
Limbajul */
completata cu zerouri
C
o - întreg în baza 8
Limbajul x - întreg în baza 16
f - real
[ Citirea cu c - caracter
format ] s - şir de caractere.
* indică faptul că valoarea citită nu se atribuie unei
variabile.
int mac[10], a;
float b;
double c;
char s[20];
C
dar memoreaza pana la primul SPATIU, TAB sau ENTER.
Limbajul */
scanf( “%s”, s ); //scanf( “%s”, &s[0] );
[ functii de citire
si scriere ] /* citire sir de intregi (hexazecimal) dupa modelul:
AA:0F:A1:BF:C2:93
*/
scanf( “%x:%x:%x:%x:%x:%x”, &mac[0], &mac[1],
&mac[2],&mac[3], &mac[4], &mac[5], );
[ date::structuri::functii ]
citirea/scrierea la nivel de caracter
2016/2017 - Suceava
Operatori Aociativitate
() [] -> . de la stânga la dreapta
! ~ + - ++ -- de la dreapta la stânga
& * (cast) sizeof
* / % de la stânga la dreapta
+ - de la stânga la dreapta
<< >> de la stânga la dreapta
C
< <= > >= de la stânga la dreapta
Limbajul == != de la stânga la dreapta
Limbajul C &
^
de la stânga la dreapta
de la stânga la dreapta
[ operatori si | de la stânga la dreapta
expresii ] && de la stânga la dreapta
|| de la stânga la dreapta
?: (operatorul condiţional) de la dreapta la stânga
= *= /= %= += -= de la dreapta la stânga
&= ^= |= <<= >>=
,(operatorul virgulă) de la stânga la dreapta
[1] K&R C - 1978, Brian Kernighan, Dennis Ritchie -The C Programming Language.
[2] C89, C90 – acelasi standard ISO/IEC 9899:1990.
[3] C99 – noul standard ISO/IEC 9899:1999, aducand multe modificari
[4] C11, C1X – standard modern ISO/IEC 9899:2011, este adaugat multi threading…
[ date::structuri::functii ] [5] C18,– ultimele modificari in iunie 2018, ISO/IEC 9899:2018,
introdus in compilatoarelein GCC 8 and LLVM Clang 6.0
2016/2017 - Suceava Conversii aritmetice
ž
Când un operator binar se aplică între doi operanzi de tip
diferit, are loc o conversie implicită:
{ operandul de tip “mai slab reprezentat” este convertit la tipul
“mai puternic reprezentat” al celuilalt operand. }
C
1. operanzii char şi short int se convertesc în int; operanzii float
Limbajul se convertesc în double.
[ operatori si 2. dacă unul din operanzi este double restul operanzilor se
expresii ] convertesc în double iar rezultatul este tot double.
EXEMPLU
c = a / b; //rezulta un int = 2
a = f / b; //rezulta un int = 2, chiar daca
//...impartiera a fost corecta 2.5
f = a / b; //rezulta un float = 2.0, deoarece
Limbajul C //...se face impartiera intreaga
[ operatori si
expresii ]
[ date::structuri::functii ]
2016/2017 - Suceava Conversii de tip CAST
ž
Conversiile explicite de tip (numite şi cast) pot fi forţate în orice
expresie folosind un operator unar (cast) într-o construcţie de
forma:
(tip) expresie
Limbajul C EXEMPLU
[ operatori si
expresii ] int
float
a=5, b=2, c;
f=5.0;
c = a / b; //rezulta un int = 2
f = (float)a / b; //rezulta un float = 2.5
a = (int)f / b; //rezulta un int = 2
[ date::structuri::functii ]
2016/2017 - Suceava Operatorii aritmetici
ž
Operatorii aritmetici binari sunt:
Regula
de asociativitate este de la stânga la dreapta ( la
priorităţi egale operatorii sunt evaluaţi de la stânga la
Limbajul C dreapta ).
[ operatori si 21 / 6; // = 3
expresii ] 21 / 7; // = 3
22 % 6; // = 4
21 / 0 ; //divide overflow
Observatie
Operatorul modulo calculează restul împărţirii a două
valori. Poate fi aplicat doar operanzilor de tip int.
[ date::structuri::functii ]
2016/2017 - Suceava Operatorii de atribuire
ž
Operaţia de atribuire modifică valoarea asociată unei
variabile (partea stângă) la valoarea unei expresii
(partea dreaptă).
<id_variabila> = <expresie>;
Valoarea transmisă din partea dreaptă este convertită
implicit la tipul părţii stângi.
Atribuiri de forma:
a = a op b
se scriu compact
a op= b
Limbajul C în care op poartă numele de operator de atribuire,
acesta putând fi un operator aritmetic:
[ operatori si ( +, -,*,/,% )
expresii ] sau ( >>, <<, &, ^, | ).
v1 = v2 = ... = vn = expresie;
Exemplu
char car;
[ date::structuri::functii ] car >= ‘a’ && car <= ‘z’
2016/2017 - Suceava Operatorii
ž incrementare/decrementare
int c=0, a, b;
a = ++c; //increment prefix
Limbajul C b = c++; // increment postfix
//a=1; b=1; c=2;
[ operatori si
expresii ] Forma prefix incrementează/decrementează valoarea lui
id_var înainte ca id_var să fie utilizată, iar în cazul formei
postfix, valoarea este incrementată / decrementată
după ce a fost utilizat id_var.