Sunteți pe pagina 1din 6

Constante

Constantele sunt valori fixe (numerice, caractere sau şiruri de caractere), nealterabile
prin program. Reprezentarea unei constante depinde de tipul său.

Constante numerice

Constantele întregi pot fi: zecimale, octale sau hexazecimale. Tipul poate fi precizat
prin adăugarea unui sufix sau este determinat de valoare, atunci când nu se utilizează sufix.
Constantele zecimale au prima cifră diferită de 0.
• Constantele de tip întreg sunt specificate fără virgulă. Pentru acestea, implicit,
complilatorul stabileşte tipul care ocupă cea mai puţină memorie. Tipul poate fi însă
stabilit prin program, dacă se utilizează sufixele U sau u, L sau l, UL, Ul sau ul pentru
unsigned, long, respectiv unsigned long.
• Constantele în virgulă mobilă se scriu cu punctul zecimal cu punct sau în forma cu
exponent şi pot fi de tip:
o float, dacă conţin sufixul F sau f ,
o long double, dacă conţin sufixul L sau l, sau
o double , dacă nu conţin sufix.

Exemple de constante zecimale:

Tip de dată Exemple

- int 2, 234, 31000, -35


- long int -56L, 35000
- unsigned int 345U, 45000
- float 45.834F, 4.78e-4F
- double 123.67, -0.567
- long double 124.8L

Se pot utiliza şi constante întregi octale (în baza 8, cifre de la 0 la 7 ) sau


hexazecimale (în baza 16, cifre de la 0 la 9, plus litere de la A la F ). Constantele întregi
octale au prima cifră 0, iar cele hexazecimale conţin prefixul 0x sau 0X. Exemple:

int octal = 027; /* 23 in zecimal*/


int hexa = 0x2A; /* 42 in zecimal*/

Constante de tip şir

Un şir este un set de caractere încadrate de ghilimele duble. De exemplu,

”Acesta este un sir de caractere.”


”\tMesaj precedat de tab\n”

Şirurile se memorează în tablouri de tip char, cu dimensiunea egală cu numărul de


caractere, la care se adaugă terminatorul de şir ‘\0’ şi rămân în memorie pe toată durata
execuţiei programului.
Şirurile constante adiacente sunt concatenate şi formează un singur şir:

7
”Aceste siruri ””se”
”concateneaza.”

În acest mod, se pot scrie şiruri care ocupă mai multe rânduri. Se mai poate utiliza şi
alternativa:

”Sir scris pe\


doua randuri”

Observaţie: A nu se confunda o constantă şir de un caracter, de exemplu, ”a” cu


constanta de tip caracter ’a’. În cazul şirului, se folosesc ghilimele duble, iar în cazul
caracterului, se folosesc apostrofuri.

Constante de tip caracter

În general, constantele de tip caracter sunt caractere încadrate de apostrofuri


(ghilimele simple). Există însă şi caractere imposibil de introdus de la tastatură, cum ar fi
caracterul de linie nouă. Din acest motiv, limbajul C include şi constante speciale, numite
backslash caracter. Acestea sunt date în următorul tabel:

Cod Semnificaţie

\b Backspace
\f Avans hârtie
\n Rând nou
\r Retur de car
\t Spaţiu de tabulare orizontal
\” Ghilimele duble
\’ Ghilimele simple
\0 Nul
\\ Backslash ( \ )
\v Spaţiu de tabulare vertical
\a Alertă
\N Constantă în octal ( N este constanta în octal )
\xN Constantă în hexazecimal ( N este constanta în hexazecimal )

De exemplu, următorul program emite o linie nouă, un spaţiu de intabulare şi afişează


şirul Mesaj.

#include <stdio.h>
void main(void)
{
printf(”\n\tMesaj”);
}

Observaţie: Orice valoare din gama char se poate specifica folosind secvenţe octale,
în gama ‘\0’..’\0377’, sau secvenţe hexazecimale, în gama ‘\x0’..’\x0FF’.

8
Variabile
O variabilă este numele unei locaţii din memorie utilizată pentru a păstra o valoare
care poate fi modificată prin program. Toate variabilele utilizate într-un program trebuie
declarate. Declaraţia trebuie să preceadă utilizarea variabilei. Exemple de declaraţii:

int i, j, k;
unsigned int l1;
short int m;
float a, b, delta;
double eroare, precizie;
long double miu, epsilon;

Observaţii:
1. La declararea variabilelor, modificatorii se plasează în faţa numelui tipului.
2. Când modificatorii long, short şi unsigned sunt utilizaţi cu tipul int, numele
tipului se poate omite. De exemplu, declaraţiile:

unsigned int k, l;
short int m;

sunt echivalente cu următoarele declaraţii:

unsigned k, l;
short m;

Cu ajutorul instrucţiunii typedef se pot defini tipuri propii. De exemplu, instrcţiunea

typedef unsigned long int u_l_i;

defineşte tipul propiu u_l_i ce poate fi utilizat pentru definire de variabile.


De exemplu, instrucţiunea

u_l_i k, l;

defineşte variabilele k şi l de tip u_l_i, adiă de tip unsigned long int.


Declararea variabilelor se poate face în trei locuri:
• în interiorul funcţiilor (variabile locale),
• în cadrul definiţiei parametrilor funcţiei (parametrii formali) şi
• în afara oricărei funcţii (variabile globale).

Variabile locale

Varibilele care sunt declarate în interiorul unei funcţii se numesc variabile locale sau
automatice. Ele sunt accesibile numai instrucţiunilor din interiorul blocului în care au fost
definite şi sunt dinamice, adică există numai atâta timp cât se execută blocul în care sunt
declarate. Aceasta înseamnă că o astfel de variabilă este creată la începutul execuţiei blocului
şi distrusă la încheierea execuţiei.
De obicei, blocul de cod în care sunt declarate este funcţia. De exemplu, în secvenţa:

9
void f1(void)
{
int x;
x=10;
}

void f2(void)
{
int x;
x=100;
}

variabila x a fost declarată în două funcţii f1 şif2, adică în două blocuri diferite. Cu toate că au
acelaşi nume, cele două variabile sunt diferite.

Observaţii:
1. Limbajul C conţine cuvântul cheie auto pentru a se declara variabile locale.
Exemplu:

auto int contor;

Cum toate variabilele care nu sunt globale sunt implicit locale, cuvântul nu este utilizat.
2. Într-o funcţie, din obişnuinţă, variabilele locale se declară înainte de acolada deschisă.
Totuşi, în C++, se pot decara variabile locale în orice bloc. De exemplu, în secvenţa
următoare:

void f(void)
{
int x;
scanf(”%d”, &t);
if(x=10)
{
char s[30];
printf(”Introduceti numele:”);
get(s);
}
}

variabila locală s se crează la intrarea în blocul if şi distrusă la ieşirea din el.

Parametrii formali

Când o funcţie utilizează argumente, trebuie să se declare variabilele pe care aceasta le


acceptă ca valori ale argumentelor. Aceste variabile, în cazul funcţiei, se numesc parametrii
formali, pot fi utilizate ca variabile locale şi sunt distruse la ieşirea din funcţie.
Declararea lor se face între paranteze, după numele funcţiei. Dacă sunt mai mulţi
parametrii, aceştia se separă prin virgulă.
De exemplu, în cazul declaraţiei:

10
/* Functia returneaza valoarea 1, daca in sir este gasit
caracterul c, sau 0, in caz contrar*/
f1(char *sir, char c)
{
while(*sir)
if(*sir=c) return 1;
else s++;
return 0;
}

sunt declaraţi doi parametrii: sir, de tip sir de caractere, şi c, de tip caracter. În cadrul funcţiei
f1, aceştia sunt utilizaţi ca variabile locale.

Variabile globale

Varibilele globale sunt cunoscute în tot programul şi pot fi utilizate în orice zonă a
codului. Acestea se declară în afara oricărei funcţii. De exemplu, programul

#include <stdio.h>
int k /* contor global*/
void f1(void);
void f2(void);
void main(void);
{
k=10;
f1();
}
void f1(void);
{
int j;
j=k;
f2();
printf(”k= %d”, k);/* se afiseaza k=10*/
}
void f2(void);
{
int k;
for(k=1;k<5;k++)
putchar(”-”);
}

conţine două variabile diferite cu acelaşi nume k. Prima este declarată în funcţia main şi este
globală, iar a doua este declarată în funcţia f2 şi este locală. În blocul funcţiei f2, referirile se
fac la variabila locală k, iar în blocul funcţiei f1 referirile se fac la variabila globală k.
Observaţie: Se recomandă, pe cât posibil, evitarea variabilelor globale, deoarece
acestea se păstrează în memorie pe toată durata execuţiei programului sau se pot produce
erori, prin schimbarea accidentală a acestora.

11
Iniţializări de variabile

În momentul declarării, o variabilă poate fi şi iniţializată. Forma generală a iniţializării


este:

tip nume_variabila = constanta;

Exemple:

char ch=’a’;
int i, j, k=-5;
float a, delta=1.45e-7, e=2.71;
long double f=32145.55e-7;

Variabilele globale şi locale de tip static trebuie iniţializate doar la începutul


programului. În cazul neiniţializării, acestea sunt automat iniţializate cu 0.

Modelatori de acces
Modul de apelare sau modificare al variabilelor poate fi controlat cu modificatorii
const şi volatile. Aceştia trebuie să preceadă specificatorii de tip şi numele tipului de dată la
care se referă.
Variabilele de tip const nu pot fi modificate de program. Ele pot fi modificate numai
de ceva din afara programului (cauze externe).
Variabilele de tip const pot primi şi valori iniţiale. De exemplu, prin instrucţiunea

const int i=1;

variabila i este iniţializată cu valoarea 1, care nu poate fi modificată prin program.


Moderatorul const poate fi utilizat şi pentru a proteja obiecte indicate de argumentele
unei funcţii.
De exemplu, dacă un pointer este transmis unei funcţii f1

void f1(char *s)

codul funcţiei poate modifica valoarea indicată de pointer. Acest lucru nu mai poate fi posibil
dacă se utilizează moderatorul const, adică

void f1(const char *s)

Moderatorul volatile indică faptul că valoarea unei variabile poate fi modificată pe căi
nedeclarate explicit de program (de exemplu, dacă ea păstreză timpul real al sistemului).

12

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