Capitolul 2.3. Constante

Vezi subiectul anterior Vezi subiectul urmator In jos

Capitolul 2.3. Constante

Mesaj  zooky la data de Mier Mar 18, 2009 11:44 am

Constantele int si float au fost deja expuse; notam in plus ca notatia uzuala

123.456e-7

sau notatia stiintifica

0.12E3

pentru numerele flotante sint ambele legale. Orice constanta flotanta este considerata ca fiind de tipul double, asa ca notatia "e" serveste atit pentru float cit si pentru double.
Constantele lungi sint scrise in stilul 123L. O constanta intreaga normala care este prea lunga pentru un int, este luata deasemenea ca fiind o constanta long.
Exista o notatie speciala pentru constantele octale si hexazecimale: un 0 (zero) la inceputul unei constante int inseamna octal; un 0x sau 0X la inceputul unei constante int inseamna hexazecimal. De exemplu, numarul zecimal 31 poate fi scris 037 in octal si 0x1f sau 0X1F in hexazecimal. Constantele octale si hexazecimale pot fi urmate un L pentru a le face "long".
O constanta caracter este un caracter singur scris intre ghilimele simple ca, de exemplu, 'x'. Valoarea unei constante caracter este valoarea numerica a caracterului in setul de caractere al calculatorului. De exemplu, in setul de caractere ASCII, caracterul zero, sau '0', are valoarea 48, iar in EBCDIC, 240, amindoua valorile fiind diferite de valoarea numerica 0. Scriind '0' in loc de o valoare numerica de tipul 48 sau 240, facem programul independent de o valoare particulara. Constantele caracter participa in operatiile numerice la fel ca oricare alte numere, cu toate ca cel mai adesea ele sint folosite in comparari cu alte caractere. O sectiune viitoare va trata toate regulile de conversie.
Anumite caractere negrafice pot fi reprezentate constante caracter cu ajutorul secventelor escape, de exemplu \n (linie noua), \t (tab), \0 (nul), \\ (backspace), \'(ghilimea simpla) etc, care arata ca doua caractere, dar de fapt sint unul singur.
In plus, se poate genera orice model de lungime un octet, scriind:

'\ddd'

unde 'ddd' reprezinta 1 - 3 cifre octale, ca in

#define FORMFEED '\014' /* ASCII formfeed */

Constanta caracacter '\0' reprezinta caracterul ce are valoarea '\0' se scrie adesea in locul lui 0 pentru accentua natura caracter a anumitor expresii.
O expresie constanta este o expresie care implica numai constante. Astfel de expresii sint evaluate la compilare si nu la executie si ele pot fi folosite in orice loc in care poate apare o constanta, ca in

#define MAXLINE 1000
char line[MAXLINE+1];
sau

seconds = 60 * 60 * hours;

O constanta-sir este o secventa compusa din zero sau mai multe caractere intre ghilimele duble, ca

"I am a string"

sau
"" /* un sir nul */

Ghilimelele duble nu sint parte a sirului ci servesc doar ca delimitatori. Aceleasi secvente escape folosite pentru constantele caracter se aplica si la siruri; \" reprezinta caracterul dubla ghilimea.
Tehnic, un sir este un tablou ale carui elemente sint caractere. Compilatorul plaseaza automat un caracter nul \0 la sfirsitul oricarui astfel de sir, astfel ca programele pot determina lesne sfirsitul sirului. Aceasta reprezentare spune ca nu exista o limita reala pentru lungimea unui sir, dar programele trebuie sa parcurga tot sirul pentru a-i determina lungimea. Memoria fizica ceruta este cu o locatie mai mult decit numarul de caractere scrise intre ghilimele duble. Functia urmatoare, strlen(s) returneaza lungimea unui sir de carctere s, exclusiv terminatorul \0.

strlen(s) /* returneaza lungimea lui s */
char s[];
{
int i;
i = 0;
while (s[i] != '\0')
++i;
return(i);
}

Trebuie distins intre o constanta caracter si un sir care contine un singur caracter: 'x' si "x" nu sint acelasi lucru. Primul este un caracter, folosit pentru a produce valoarea numerica a caracterului x din setul de caractere al calculatorului; al doilea este un sir de caractere care contine un singur caracter (litera x) si un \0.
avatar
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 24
Localizare : Cernatesti City

Vezi profilul utilizatorului http://e-learning.forumhit.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum