Академический Документы
Профессиональный Документы
Культура Документы
PROIECT ATESTAT
INFORMATICA
TEMA:
PROGRAMARE C/C++
CUPRINS
1. Limbaje de programare..
pag. 4
2. Limbajul C/C++
pag. 6
3. Caracteristicile limbajului C++
..... pag. 8
4. Procesul dezvoltari unui program C++
..... pag. 8
5. Bibliografie
. pag. 38
Limbaje
programare
de
ce
ordine
cu
ce
date.
Specificarea
const
practic
reprezint
dintr-un
limbaj.
un
n
set
de
reguli
ce
guverneaz
alctuirea
propoziiilor
Limbajul de asamblare
Limbajul main este limbajul pe care computerul l nelege n mod direct; n acest
limbaj programele se scriu n cod binar ca succesiuni de 0 i 1, fiecare instruciune din
limbajul main fiind o combinaie de 4 bii (exemple: LOAD-0000, ADD-0001). Pentru
aceasta programatorul
aprea
multe
erori
datorate
concepiei
programului,
sintaxei,
codarea
mnemonic
(cum
ar
limbaj main.
fi ADD)
cu
Asamblorul
coduri
binare
nivel
de
modalitate
de
programare
care
abordarea
este
top-down:
1.
2.
3.
Limbajul C - Scurt
istoric
Limbajul C a fost proiectat i implementat de Dennis Ritchie ntre anii 1969 i
1973 la AT&T Bells Laboratories, pentru programe de sistem (care pn
atunci erau dezvoltate doar n limbaje de asamblare). A fost numit C
deoarece este un succesor al limbajului B, limbaj creat de Ken Thompson.
Originile limbajului C sunt strns legate de cele ale UNIX-ului, care iniial
fusese implementat n limbajul de asamblare PDP-7 tot de Ritchie i
Thompson. Deoarece limbajul B nu putea folosi
Standards
Institute).
n
1990, ANSI
standard
fost
Organization for
adoptat
de International
compilatoarele curente de C.
Caracteristicile limbajului C
Caracteristicile limbajului C, care i-au determinat
popularitatea, sunt prezentate pe scurt mai jos i vor fi
analizate pe parcursul cursului:
limbaj de nivel mediu, portabil, structurat, fexibil
produce programe efciente ( lungimea codului sczut, vitez
de execuie mare )
set bogat de operatori
multiple faciliti de reprezentare i
prelucrare a datelor utilizare extensiv a
apelurilor de funcii i a pointerilor
verificare mai sczut a tipurilor - loose typing - spre
deosebire de PASCAL
permite programarea la nivel sczut - low-level - , apropiat de
hardware
Este utilizat n multiple aplicaii, n care nu predomin caracterul numeric:
programe de sistem
proiectare asistat de
calculator grafic
prelucrare de imagini
aplicaii de inteligen artificial.
Instruciune
2
.
.
.
Instruciune
n
operaii
de
intrare-ieire
(de
citire-scriere).
Aceste
operaii
sunt exprimate prin instruciuni ale limbajului sau prin apelarea unor funcii
standard predefinite (de bibliotec). Desfurarea n timp a instruciunilor de
prelucrare i de intrare-ieire este controlat prin instruciuni repetitive (de
ciclare) i de decizie (de comparaie).
Fiecare limbaj de programare are reguli gramaticale precise, a cror
respectare este verificat
de
programul
compilator
(translator).
MS
Visual
Studio,
Environment)
Eclipse
precum
CodeBlocks,
trebuie
salvat
Build
sau
linie
de
comand,
cu
> Hello
$ ./Hello
Pas 2: Preprocesare
Pas 3: Compilare
BUILD Cod obiect (.o,
.obj)
Biblioteci statice (.lib, .l)
Linker
Pas 4: Link-editare
Cod
executabil
Biblioteci dinamice (.dll, .so)
ncrcare
DATE INTRARE
Loader
CPU
Execuie
Pas 5:
RUN
Pas 6:
DATE
IEIRE
Pas
Descriere
3
4
5
Pentru mai multe detalii vom include aici tutoriale de utilizare a unor
medii integrate de dezvoltare C:
Tutorial CodeBlocks
Tutorial NetBeans
Structura
unui
program C
Un program C este compus dintr-o ierarhie de funcii, orice program
trebuind s conin cel
puin funcia main, prima care se execut la lansarea programului C. Funciile
pot face parte dintr-un singur fiier surs sau din mai multe fiiere surs. Un
fiier surs C este un fiier text care conine o succesiune de funcii i,
eventual, declaraii de variabile.
Primul
program C
Varianta
Cod
#include<stdio.h>
void main(void)
{
printf(Hello World!);
}
2 fr void n
antetul
main-ului
#include<stdio.h>
void main()
{
printf(Hello World!);
}
3 - fr
warning la
compilare n
Code::Blocks
#include<stdio.h>
int main()
{
printf(Hello
World!);
return
0;
}
Execuia programului ncepe cu prima linie din main. Cuvntul din faa
funciei main reprezint tipul funciei (void arat c aceast funcie nu
transmite nici un rezultat prin numele su, int arat c trimite un rezultat
de
tip
ntreg,
prin
instruciunea
return).
Parantezele
care
urmeaz
cuvntului main arat c main este numele unei funcii (i nu este numele
unei variabile), dar o funcie fr parametri (acel void care poate lipsi
varianta 2).
Acoladele sunt necesare pentru a delimita corpul unei funcii, corp
care este un bloc de
instruciuni i declaraii. Funcia printf realizeaz afiarea pe ecran a textului
Hello World!. Directiva #include este o directiv de preprocesare,
permite includerea unor funcii de bibliotec, necesar pentru folosirea
funciei printf.
Alte observaii care pot fi
fcute:
cuvintele cheie sunt scrise cu
litere mici instruciunile se
termin cu ';'
irurile de caractere sunt incluse ntre ghilimele
limbajul C este case sensitive face diferen ntre literele mici i
literele mari ( a
este diferit de A )
\n folosit n funcia printf poziioneaz cursorul la nceputul
liniei urmtoare
Elemente de
limbajului C
baz
ale
Puterea lui 2 7 6 5 4 3 2 1 0
01000001
Valoare
Pentru a nelege mai bine ce nseamn mod de codificare urmtoarele
noiuni auxiliare sunt descrise n anexa Tutorial despre reprezentarea
datelor .
Octet
reprezentare n baza 2, 8, 10, 16
alt
spaiul
are codul
mai
mic
decat
adoptat i
Identifcatorii pot fi :
nume utilizator - nume de variabile, constante
simbolice, funcii, tipuri, structuri, uniuni - este bine
sa fe alese ct mai sugestiv pentru scopul utilizrii;
cuvinte cheie ale limbajului C - pot fi folosite doar cu
nelesul cu care au fost defnite
cuvinte rezervate - nelesul poate fi modifcat, de evitat
acest lucru;
Limbajul C impune urmtoarele reguli asupra identificatorilor:
Un identificator este o secven de caractere, de o lungime maxim ce
depinde de compilator
(n general are maxim 255 de caractere). Secvena poate conine litere mici i
mari(a-z, A-Z), cifre
(0-9) i simbolul '_' (underscore, liniua de subliniere).
Primul
caracter
trebuie
fie
liter
sau
'_'.
Pentru c multe
Recomandri:
Este important s alegem un nume care este self-descriptive, care
reflect foarte bine nelesul
exemplu,
vom
spune
identificatorului
nrStudenti
respectiv,
de
sau
numarDeStudenti.
ncercai s nu folosii identificatori care nu spun nimic (lipsii de un sens
clar): a, b, c, d, i, j, k, i1, j99.
Evitai numele de un singur caracter care sunt mai uor de folosit dar de
cele mai multe ori lipsite de vreun neles. Acest lucru este ns utilizat
dac sunt nume commune cum ar fi x, y, z pentru coordinate sau i, j
pentru indici.
Nu folosii nume foarte lungi, sunt greu de utilizat, ncercai s
optimizai lungimea numelui cu nelesul acestuia.
Folosii singularul i pluralul pentru a diferenia. De exemplu, putem
folosi numele linie pentru a ne referi la numrul unei singure linii i
numele linii pentru a ne referi la mai multe linii (de exemplu un vector de
linii).
Cuvintele cheie se folosesc n declaraii i instruciuni i nu pot fi folosite ca
nume de variabile sau de funcii (sunt cuvinte rezervate ale limbajului). Exemple de
cuvinte cheie:
int
char
extern
register
double
foat
unsigned
do
while
switch
case
short
long
typedef
else
struct
union
sizeof
break
auto
static
for
goto
return
default
if
continue
signed
enum
const
volatile
void
Numele de funcii standard (scanf, printf, sqrt etc.) nu sunt cuvinte cheie, dar nu se
recomand utilizarea lor n alte scopuri, deoarece aceasta ar produce schimbarea
sensului iniial, atribuit n toate versiunile limbajului.
Tipuri
date
de
Tipurile de date
fundamentale
sunt: caracter (char
1 octet) ntreg (int
4 octei)
virgul mobil (float 4 octei)
virgul mobil dubl precizie (double 8 octei)
nedefinit (void)
Tipurile de date derivate sunt:
tipuri structurate (tablouri, structuri)
tipul pointer (4 octei)
Pentru a utiliza eficient memoria i a satisface necesitile unei multitudini de
aplicaii exist n C mai multe tipuri de ntregi i respectiv de reali, ce difer
prin memoria alocat i deci prin numrul de cifre ce pot fi memorate i prin
domeniul de valori.
Tipurile ntregi sunt: char ,
double, pentru
(numai cu semn).
Caractere: Caracterele (exemplu 'a', 'Z', '0', '9') sunt codificate ASCII sub form
de valori ntregi, i pstrate n tipul char. De exemplu, caracterul '0' este 48
(decimal, adic n baza 10) sau 30H (hexadecimal baza 16); caracterul 'A'
este 65 (decimal) sau 41H (hexadecimal); caracterul 'a' este 97 (decimal) sau
61H (hexadecimal). Se observ c tipul char poate fi interpretat ca i character
n codul ASCII sau ca un ntreg fr semn n domeniul 0 255.
Standardul C din 1999 prevede i tipul boolean _Bool (sau bool)
pe un octet.
Reprezentarea intern i numrul de octei necesari pentru fiecare tip nu sunt
reglementate de standardul limbajului C, dar limitele fiecrui tip pentru o
anumit implementare a limbajului pot fi aflate din fiierul antet limits.h (care
conine i nume simbolice pentru aceste limite - INT_MAX i INT_MIN) sau
utiliznd operatorul sizeof.
De obicei tipul int ocup 4 octei, iar valoarea maxim este de cca. 10 cifre
zecimale pentru tipul int. Depirile la operaii cu ntregi de orice lungime
nu sunt semnalate dei rezultatele sunt incorecte n caz de depire.
Reprezentarea numerelor reale n diferite versiuni ale limbajului C este mai
uniform deoarece
urmeaz un standard IEEE de reprezentare n virgul mobil. Pentru tipul
float domeniul de valori este ntre 10E-38 i 10E+38 iar precizia este de 6
cifre zecimale exacte. Pentru tipul double domeniul de valori este ntre 10E308 i 10E+308 iar precizia este de 15 cifre zecimale.
Tabelul
urmtor
respective
maxim
prezint
dimensiunea
pentru tipurile
tipic,
valorile
primitive (n cazul
minim
general). nc
i
o
Categori Tip
e
int
signed int
unsigned int
char
Numere
ntregi
signed char
Descriere
Octe Valoare
i
minim
ntreg cu semn
(cel
puin 16 bii)
ntreg fr semn
(cel
puin 16 bii)
Caracter
(poate fi cu
semn sau fr
semn,
depinde de
implementare
)
Caracter
sau
ntreg
mic cu semn
(garanteaz c
e cu semn)
4 (2)
4 (2)
Valoare
Maxim
21474836
31
2147483648 47 (=2 1)
0
42949672
32
95 (=2 -1
)
-128
127
7
(=2 -1 )
unsigned char
short
short int
signed
short
signed
unsigned short
unsigned short
int
Caracter or sau
1
ntreg mic fr
semn
(garanteaz c e
fr semn)
ntreg scurt cu
2
semn
(cel puin 16 bii)
255
8
(=2 -1 )
-32768
32767
ntreg scurt fr
semn (cel puin
16 bii)
15
(=2 -1 )
65535
16
(=2 1)
long
long int
signed
long
signed
unsigned
long
unsigned long
int
ntreg lung cu
4 (8)
semn
(cel puin 32 bii)
214748364
2147483648 7
ntreg lung fr
semn (cel puin
32 bii)
4 (8)
42949672
32
95 (=2 -1
)
long long
long long int
signed long
long signed
long long int
unsigned long
long
unsigned long
long int
-263
(=2 -1)
2 -1
3.4e-38
3.4e38
1.7e-308
1.7e308
12 (8)
3.4E-4932
1.1E4932
float
double
Numer
e
Real
e
long double
31
(=2 -1 )
63
64
precizie)
Valoare boolean 1
care poate fi fie
true fie false
(de la standardul
C99)
bool
Numer
e
boolee
ne
true (1 sau
diferit de
zero)
false (0)
valoare
compilatoare).
Un ntreg long este identificat prin folosirea sufixului 'L' sau 'l'. Un
long long int este identificat prin folosirea sufixului 'LL'. Putem folosi
sufixul 'U' sau 'u' pentru unsigned int,
'UL' pentru unsigned long, i 'ULL' pentru unsigned
long long int.
nu e nevoie de sufix.
Exemple:
-10000
65000
32780
32780u
1234;
01234;
//
//
//
//
//
//
int
long
long
unsigned int
Decimal
Octal 1234, Decimal 2322
0x1abc;
0b10001001;
12345678L;
123UL;
987654321LL;
//
//
//
//
//
Valorile reale
Sunt implicit de tipul double; sufixul f sau F aplicat unei constante, o face de
tipul float, iar l sau
L de tipul long double.
Un numr cu parte fracionar, ca 55.66 sau -33.442, este tratat
implicit ca double. O constanta real se poate reprezenta i sub
forma tiinific.
Exemplu:
// 1.2*103
// -5.5*10-6
1.2e3
-5.5E-6
unde E denot exponentul puterii lui 10. Mantisa, partea de dinaintea lui E
poate fi precedat
de semnul plus (+) sau minus (-).
mantisa - parte_intreag.parte_zecimala ( oricare din cele dou pri
poate lipsi, dar nu ambele )
exponent - eval_exponent sau Eval_exponent, unde val_exponent este
un numr ntreg. Valoarea constantei este produsul dintre mantisa si 10 la
puterea data de exponent.
Constante
de tip
foa
Constante
de tip
doubl
Constante de
tip long
doubl
.241f
.241
.241l
12.5e5f
12.5e5
12.5e5l
1.f
1.
1.L
98.E12f
98.E-12
98.E12L
Valori caracter
Valorile de tip caracter se reprezint pe un octet i au ca valoare codul
ASCII al caracterului respectiv.
n reprezentarea lor se folosete caracterul apostrof : A (cod ASCII 65), b,
+.
Pentru caractere speciale se folosete caracterul \.
Exemple:
\ - pentru apostrof
\\ - pentru backslash
Este greit:
sau \
Tot aici intr i secvenele escape ce se pot scrie sub forma unei secvene ce
ncepe cu \, Constantele caracter pot fi tratate n operaiile aritmetice ca un
ntreg cu semn pe 8 bii. Cu alte cuvinte, char i signed int pe 8 bii sunt
interschimbabile. De asemenea, putem atribui un ntreg n domeniul [-128,
127] unei variabile de tip char i [0, 255] unui unsigned char.
Caracterele non-tipribile i caracterele de control pot fi reprezentate printr-o
secven
escape, care ncepe cu un back-slash (\) urmat de o liter (\n = new line , \t
=tab , \b =
backspace etc), sau de codul numeric al caracterului n octal sau n
hexazecimal (\012 = \0x0a =
10 este codul pentru caracterul de trecere la linie nou \n).
Cele mai utilizate secvene escape sunt:
Secvena
escape
\n
Descrie
re feed)
Linie nou (Line
Hexa
(Decimal)
0AH (10D)
\r
Carriage-return
0DH (13D)
\t
Tab
09H (9D)
\"
Ghilimele
22H (34D)
\'
Apostrof
27H (39D)
\\
Back-slash
5CH (92D)
Valori
ir
caractere
de
Exempl
e:
"Hello, world!"
"The sum is "
""
Exempl
e:
"CURS"
"\x43URS"
// scrieri echivalente ale unui ir ce ocup 5 octei
"1a24\t"
- "\x31\x61\x32\x34\11"
//scrieri echivalente ale unui sir ce ocup 6 octei
"'\""
//ir ce conine caracterele '" i terminatorul - ocup 3 octei
Tipul void nu are constante (valori) i este utilizat atunci cnd funciile nu
ntorc valori sau cnd funciile nu au parametri:
void f ( int a)
{
if (a) a = a / 2;
}
sau cnd funciile nu au parametri:
void f (void);
Consta
nte
Constantele pot fi: predefinite sau definite
de utilizator.
Literele mari se folosesc n numele unor constante simbolice predefinite:
EOF, M_PI, INT_MAX, INT_MIN. Aceste constante simbolice sunt definite n
fiiere header (de tip h) : EOF n
stdio.h,
M_PI
math.h.
constante
ca
este
de
preferat
face
diferenierea
dintre
variabile
Variab
ile
adres de memorie.
Pentru a folosi o variabil trebuie ca mai nti s i declarm numele i tipul,
folosind una din urmtoarele sintaxe:
tip nume_variabila;
// Declar o variabil de un anumit tip
tip nume_variabila1, nume_variabila2,...;
Exemple
:
int number;
nr = 99;
//atribuie valoarea ntreag 99 variabilei nr
nr = 88;
//i reatribuie valoarea 88
nr = nr + 1;
//evalueaz nr+1 i atribuie rezultatul lui nr
int sum = 0;
int nr;
//ERROR: O variabil cu numele nr e deja definit
sum = 55.66;
// WARNING: Variabila sum este de tip int
sum = "Hello";
/* ERROR: Variabila sum este de tip int. Nu i se poate
atribui o valoare ir */
Observa
ii:
O variabil poate fi declarat o
singur dat.
n fiiere cu extensia cpp putem declara o variabil oriunde n program,
atta timp ct este declarat nainte de utilizare.
Tipul unei variabile nu poate fi schimbat pe parcursul
programului.
Numele unei variabile este un substantiv, sau o combinaie de mai
multe
timp ce celelalte cuvinte pot fi scrise cu prima liter mare, fr spaii ntre
cuvinte. Exemple: dimFont,
acestaEsteUnNumeFoarteLungDeVariabila.
Comentari
ile
Exist
dou
tipuri
de
comentarii:
Comentarii Multi-linie:
ncep cu /* i se termin cu */, i se pot ntinde pe mai multe
linii
Comentarii n linie:
ncep cu // i in pn la sfritul liniei curente.
Exemple
:
/* Acesta este
un comentariu n C */
// acesta este un alt comentariu C (C++)
Operatori,
operanzi,
expresii
Limbajul C se caracterizeaz printr-un set foarte larg
de operatori.
Operatorii sunt simboluri utilizate pentru precizarea operaiilor care trebuie
executate asupra operanzilor.
Operanzii pot fi: constante, variabile, nume de
funcii, expresii.
Expresiile sunt entiti construite cu ajutorul operanzilor i operatorilor,
respectnd sintaxa (regulile de scriere) i semantica (sensul, nelesul)
limbajului. Cea mai simpl expresie este cea format dintr-un singur operand.
evaluarea
expresiilor
se
ine
cont
de
preceden
asociativitatea operatorilor!
Exempl
e
1 + 2 * 3
// rezult int 7
Operator
ii
Clasifcarea operatorilor se poate face:
dup numrul operanzilor prelucrai:
unari
binari
ternari - cel condiional;
dup ordinea de succedare a operatorilor i operanzilor:
prefxati
infixati
postfxati
dup tipul operanzilor i al prelucrrii:
aritmetici
relaionali
logici
la nivel de bit.
Operatorii se mpart n clase de preceden, fiecare clas avnd o regul de
asociativitate, care indic
ordinea
aplicrii
operatorilor consecutivi de
Operato
r
(
)
[
]
.
->
-+
+
-+
+
!
~
*
&
sizeo
f
()
*
/
%
Semnificaie
parante
ze
indexare
selecie
selecie indirect
postdecrement
are
postincrement
schimbare
semn
plus unar ( fr
efect)
predecrement
are
preincrementa
re
negaie
logic
complementare ( negare bit
cu bit )
adresare
nmulire
mprire
rest mprire ( modulo )
+
-
adunare
scdere
<
<
>
<
<
=
>
>
=
=
deplasare
stnga
deplasare
mai mic
mai mic sau egal
mai mare
mai mare sau egal
Utilizare Asociativit
ate
(e)
t[i]
s.c
p>c
a-a+
+
-v
+v
--a
++a
!i
~i
*p
&a
sizeof(
x) (d) e
v1 * v2
v1 / v2
v1
%
v2
v1 +
v2 v1
-i1v2
<<
i2 i1
>>
v1 <i2
egal
diferi
t
i pe bii
v2 v1
<= v2
v1 >
v2 v1
v1 ==
v2 v1 !
=
i1 v2
& i2
i1 ^ i2
sau pe bii
i1 | i2
&&
i logic ( conjuncie )
i1 && i2
||
i1 || i2
=
!=
&
dreapta stnga
?:
=
*= /=
%=
+=
-=
&= ^=
,
expr ? v1 : v2
atribuire
variante
ale
operatorului de atribuire
a=v
a *= v
secveniere
e1, e2
dreapta stnga
dreapta stnga
Legend
:
a - variabila ntreag sau real
i - ntreg
c - cmp
v - valoare
ntreag sau real
d
nume
tip
p - pointer
e - expresie
s - structur sau
uniune f - nume de funcie
t - tablou
x - nume tip sau
expresie
Operatorii
aritmetici
C suport urmtorii operatori aritmetici pentru numere de tip: short, int,
long, long long, char (tratat ca 8-bit signed integer), unsigned short,
unsigned int, unsigned long, unsigned long long, unsigned char, float, double
i long double.
expr1 i
Operator
+
*
/
Semnificaie
schimbare semn
plus unar ( fr efect)
Utilizare
-expr1
+expr1
nmulir
e
expr1 *
expr2
mprir
e
expr1 /
expr2
rest mprire (
modulo )
expr1 %
expr2
Exemple
-6
-3.5
+2
+2.
5
2*3
6;
3.3 * 1.0
1/2
0;
1.0 / 2.0
5 % 2 1;
-5 % 2 -1
adunar
e
expr1 +
expr2
1+2
3;
1.1 + 2.2
expr2
scdere
expr1 -
1-2
-1;
1.1 - 2.2
-1.1
OperatorSemnificaie
y=8)
=
egal cu
Utilizare
Exemple (x=5,
expr1 == expr2
(x == y) false
diferit
expr1 != expr2
(x != y) true
mai mare
(x > y) false
>
=
<
(x >= 5) true
mai mic
(y < 8) false
<
=
(y <= 8) true
=
!
=
>
OperatorSemnificaie
(expr1=0,
&&
Utilizare
Exemple
expr2=1)
0
i logic
||
sau logic
expr1 || expr2
Diferit de 0
negaie logic
!expr1
Diferit de 0
true
false
true fals
e
true false
false false
true
false
true
true
true
false
false true
Este incorect s scriem 1 < x < 100 , n loc de aceasta spargem n dou
operaii de comparaie x>1, x < 100, pe care le unim cu un operator logic
I: (x > 1) && (x < 100).
Exemple:
// Returneaz true dac x este ntre 0 i 100 (inclusiv)
(x >= 0) && (x <= 100)
// greit 0 <= x <= 100
// Returneaz true dac x nu este ntre 0 i 100 (inclusiv)
(x < 0) || (x > 100)
//sau
!((x >= 0) && (x <= 100))
/* Returneaz true dac year este bisect. Un an este bisect dac
este divizibil cu 4 dar nu cu 100, sau este divisibil cu 400.*/
((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)
Operatorii de atribuire
Pe lng operatorul de atribuire '=' descris mai sus, limbajul C mai pune la
dispoziie aa numiii operatori de atribuire compui:
OperatorSemnificaie
=
atribuire
Utilizare
var = expr
Exemple
x=
5
+
=
-=
*=
var = var +
expr
var = var
expr
var = var *
expr
/=
%
=
var = var %
expr
var + = expr
x+=
5
var - = expr
(echivalent cu
x=5
var * = expr
(echivalent
x*= cu
5
var / = expr
(echivalent
x/=5 cu
var %= expr
(echivalent cu
x=x/5)
x
%=5
(echivalent cu
Limbajul C mai introduce i cei doi operatori aritmetici pentru incrementare
'++' i
decrementare '--' cu 1:
Operato
r
--var
var--
Semnificaie
predecrementare
post decrementare
Exemple
y=
--x;
y=x-;
++var
preincrementare
y=+
+x;
var++
post incrementare
y=x+
+;
Rezultat
echivalent
cu
x=x1;
echivalent
cu
y=x
;
echivalent
cu
x=x+1;
echivalent
cu
y=x
;
Exemple:
int i, j, k;
// variabilele sunt initializate cu aceeasi valoare, 0
i = j = k = 0;
float lungime, latime, inaltime, baza, volum;
// calculeaza baza si volumul unui paralelipiped
volum = inaltime * ( baza = lungime * latime );
Operatorul sizeof
Rezultatul aplicrii acestui operator unar este un ntreg reprezentnd
numrul de octei
sizeof('a')
sizeof(int)
sizeof(2.5 + 3)
Conversii
de
tip.
Operatorul
de
evaluarea
expresiilor
pot
apare
conversii implicite:
dac o expresie are doar operanzi ntregi, ei se
convertesc la int
dac o expresie are doar operanzi reali sau intregi, ei se
convertesc la double.
dac
expresie
are
operanzi
de
tipuri
diferite,
compilatorul
0.
5.
Ti
Exempl
Opera
int
double
mixt
2+3
2.2 + 3.3
2 + 3.3
int
double
mixt
1/2
1.0 / 2.0
1 / 2.0
Exemple
implicite:
conversii
long l; float f;
2.9 e convertit implicit la int, deci i va fi 2
f va fi 65.0 ( codul ASCII )
expresia se calculeaza in domeniul int, i va fi 30099
calcul in dom. int, depasire nesemnalata, i e 25536
// -25536 va fi convertit la long
// rezultat corect
// rezultat corect
Conversii de tip
explicite
Operatorul de conversie explicit ( cast ) se utilizeaz atunci cnd se
dorete ca valoarea unui operand ( expresie ) s fie de un alt tip dect cel
implicit. Operatorul este unar, are prioritate ridicat si are sintaxa:
( tip )
expresie
Exemple
conversii
explicite
float r;
r = 5 / 2;
int x = (int) r;
//x va fi 2
Operatorul
condiional
Operatorul condiinal ? : este singurul operator ternar. Are prioritatea mai
ridicat doar dect
a operatorilor de atribuire i a celui secvential, iar asociativitatea este de la
dreapta spre stanga. El se folosete n situaiile n care exist dou variante
de obinere a unui rezultat, dintre care se alege una singur, funcie de
ndeplinirea sau nendeplinirea unei condiii. Cei trei operanzi sunt expresii,
prima reprezentand condiia testat.
Operatorul
secvenial
Operatorul secvenial , ( virgul ) este cel cu prioritatea cea mai sczut.
Se folosete atunci cnd sintaxa limbajului impune prezena unei singure
expresii, iar prelucrarea presupune evaluarea a dou sau mai multe expresii;
acestea se evalueaz de la stnga la dreapta, iar rezultatul ntregii expresii
este cel al ultimei expresii ( exprn ):