CONSTANTE
O constantă este un literal (o formă externă de reprezentare) numeric, caracter sau şir de caractere. Numele şi valoarea unei constante sunt identice. Valoarea unei constante nu poate fi schimbată în timpul execuţiei programului în care a fost utilizată. Tipul şi valoarea ei sunt determinate în mod automat, de către compilator, pe baza caracterelor care compun literalul.
Constante întregi
Constantele întregi sunt literali numerici (compuşi din cifre), fără punct zecimal.
-) Constante întregi în baza 10, 8 sau 16
-) Constante întregi în baza 10
Exemple:
45
-78 // constante întregi decimale (în baza 10), tip int
-) Constante întregi octale
Dacă în faţa numărului apare cifra zero (0), acest lucru indică faptul că acea constantă este de tipul int, in baza opt (constantă octală).
Exemple:
056
077 // constante întregi octale, tip int
-) Constante întregi hexagesimale
Dacă în faţa numărului apar caracterele zero (0) şi x (sau X), acest lucru indică faptul că acea constantă este de tipul int, în baza 16 (constantă hexagesimală). Amintim că în baza 16 cifrele sunt: 0-9, A (sau a) cu valoare 10, B (sau b) cu valoare 11, C (sau c) cu valoare 12, D (sau d) cu valoare 13, E (sau e) cu valoare 14, F (sau f) cu valoare 15.
Exemple:
0x45
0x3A
0Xbc // constante întregi hexagesimale, tip int
-) Constante întregi, de tipuri derivate
-) Dacă secvenţa de cifre este urmată de L sau l, tipul constantei este long int.
Exemple:
145677L
897655l // tip decimal long int
-) Dacă secvenţa de cifre este urmată de U sau u, tipul constantei este unsigned int.
Exemple:
65555u
-) Dacă secvenţa de cifre este urmată de U (u) şi L (l), tipul constantei este unsigned long int.
Exemple: 7899UL //tip decimal unsigned long int
Constante numerice, reale
-) Dacă o constantă numerică conţine punctul zecimal, ea este de tipul double.
Exemplu:
3.1459 //tip double
-) Dacă numărul este urmat de F sau f, constante este de tip float.
-) Dacă numărul este urmat de L sau l, este de tip long double.
Exemplu:
0.45f //tip float
9.788L //tip long double
-) Constante reale în format ştiinţific
Numărul poate fi urmat de caracterul e sau E şi de un număr întreg, cu sau fără semn. În acest caz, constanta este în notaţie ştiinţifică. În această formă externă de reprezentare, numărul din faţa literei E reprezintă mantisa, iar numărul întreg care urmează caracterului E reprezintă exponentul. In forma externă de reprezentare, baza de numeraţie este 10, deci valoarea constantei va fi dată de mantisa10.
Exemplu:
1.5*10-2 //tip double, în notaţie ştiinţifică, valoare 1.510
Constante caracter
Constantele caracter sunt încadrate între apostroafe.
Exemplu:
‘a’ //tip char
O constantă caracter are ca valoare codul ASCII al caracterului pe care îl reprezintă.
Acest set de caractere are următoarele proprietăţi:
-) Fiecărui caracter îi corespunde o valoare întreagă distinctă (ordinală);
-) Valorile ordinale ale literelor mari sunt ordonate şi consecutive (‘A’ are codul ASCII 65, ‘B’ – codul 66, ‘C’ – codul 67, etc.);
-) Valorile ordinale ale literelor mici sunt ordonate şi consecutive (‘a’ are codul ASCII 97, ‘b’ – codul 98, ‘c’ – codul 99, etc.);
-) Valorile ordinale ale cifrelor sunt ordonate şi consecutive (‘0’ are codul ASCII 48, ‘1’ – codul 49, ‘2’ – codul 50, etc.).
-) Constante caracter corespunzătoare caracterelor imprimabile
O constantă caracter corespunzătoare unui caracter imprimabil se reprezintă prin caracterul respectiv inclus între apostroafe.
Exemplu:
Constantă caracter Valoare
‘A’ 65
‘a’ 97
‘0’ 48
‘*’ 42
Excepţii de la regula de mai sus le constituie caracterele imprimabile apostrof (‘) şi backslash (\).
Caracterul backslash se reprezintă: ‘\\’. Caracterul apostrof se reprezintă: ‘\”.
-) Constante caracter corespunzătoare caracterelor neimprimabile
Pentru caracterele neimprimabile, se folosesc secvenţe escape. O secvenţă escape furnizează un mecanism general şi extensibil pentru reprezentarea caracterelor invizibile sau greu de obţinut.
Constantă caracter |
Valoare (Cod ASCII) |
Denumirea caracterului |
Utilizare |
‘\n’ |
10 |
LF |
rând nou (Line Feed) |
‘\t’ |
9 |
HT |
tabulator orizontal |
‘\r’ |
13 |
CR |
poziţionează cursorul în coloana 1 din rândul curent |
‘\f’ |
12 |
FF |
salt de pagină la imprimantă (Form Feed) |
‘\a’ |
7 |
BEL |
activare sunet |
O constantă caracter pentru o secvenţă escape poate apare însă, şi sub o formă în care se indică codul ASCII, în octal, al caracterului dorit: ’\ddd’ unde d este o cifră octală.
Exemple:
’\11’ (pentru ’\t’) reprezintă constanta caracter backspace, cu codul 9 în baza 10, deci codul 11 în baza 8.
’\15’ (pentru ’\r’) reprezintă constanta caracter CR, cu codul 13 în baza 10, deci codul 11 în baza 8.
Constante şir de caractere
Constanta şir este o succesiune de zero sau mai multe caractere, încadrate de ghilimele. În componenţa unui şir de caractere, poate intra orice caracter, deci şi caracterele escape. Lungimea unui şir este practic nelimitată. Dacă se doreşte continuarea unui şir pe rândul următor, se foloseşte caracterul backslash.
Caracterele componente ale unui şir sunt memorate într-o zonă continuă de memorie (la adrese succesive). Pentru fiecare caracter se memorează codul ASCII al acestuia. După ultimul caracter al şirului, compilatorul plasează automat caracterul NULL (\0), caracter care reprezintă marcatorul sfârşitului de şir. Numărul de octeţi pe care este memorat un şir va fi, deci, mai mare cu 1 decât numărul de caractere din şir.
Exemple:
”Acesta este un şir de caractere” //constantă şir memorată pe 32 octeţi
”Şir de caractere continuat\”
pe rândul următor!” //constantă şir memorată pe 45 octeţi
”Şir \t cu secvenţe escape\n” //constantă şir memorată pe 26 octeţi
’\n’ //constantă caracter memorată pe un octet
”\n” //constanta şir memorată pe 2 octeţi (codul caracterului escape şi terminatorul de şir)
”a\a4” /*Şir memorat pe 4 octeţi:
Pe primul octet: codul ASCII al caracterului a
Pe al doilea octet: codul ASCII al caracterului escape \a
Pe al treilea octet: codul ASCII al caracterului 4
Pe al patrulea octet: terminatorul de şir NULL, cod ASCII 0 */
”\\ASCII\\” /*Şir memorat pe 8 octeţi:
Pe primul octet: codul ASCII al caracterului backslah
Pe al doilea octet: codul ASCII al caracterului A
Pe al treilea octet: codul ASCII al caracterului S
Pe al patrulea octet: codul ASCII al caracterului S
Pe al 6-lea octet: codul ASCII al caracterului I
Pe al 7-lea octet: codul ASCII al caracterului I
Pe al 8-lea octet: codul ASCII al caracterului backslah
Pe al 9-ea octet: terminatorul de şir NULL, de cod ASCII 0 */
”1\175a” /*Şir memorat pe 4 octeţi:
Primul octet: Codul ASCII al caracterul 1
Al 2-lea octet: codul ASCII 125 (175 in octal) al caracterului }
Al 3-lea octet: codul ASCII al caracterului a
Al 4-lea octet: codul ASCII 0 pentru terminatorul şirului */