1.6. Constante

2018/12/16 in Programare in C

O constanta are un tip si o valoare. Atat tipul cat si valoarea sunt determinate de caracterele care intra in in compunerea constantei. Valoarea unei constante nu poate fi schimbata in timpul executiei programului in care a fost utilizata.

Cuvantul cheie const

Folosim prefixul const pentru a declara constante de un anume tip dupa cum urmeaza:

#include <stdio.h>

int main() {
   const int  LUNGIME = 10;
   const int  LATIME = 5;
   const char NEWLINE = '\n';
   int aria;  
   
   aria = LUNGIME * LATIME;
   printf("valoarea ariei este: %d", aria);
   printf("%c", NEWLINE);

   return 0;
}

Dupa compilare si executie, Programul 004 produce urmatorul rezultat:

valoarea ariei este: 50

In practica programarii se obisnuieste ca definirea constantelor sa se faca cu LITERE MARI.

1.6.1. Constante intregi

Constantele intregi pot fi scrise in sistemul de numeratie cu baza 8, 10 sau 16.

O constanta zecimala intreaga este un sir de cifre zecimale. Constantele zecimale se reprezinta prin complement fata de doi pe 16 biti sau pe 32 de biti, daca nu incap pe 16 biti.

Constantele intregi reprezentate pe 16 biti sunt de tip int, iar cele reprezentate pe 32 de biti sunt de tip long.

Daca dorim sa reprezentam o constanta zecimala pe 32 de biti, chiar daca ea incape pe 16 biti, trebuie sa o terminam prin L sau l.

Exemple:

Reprezentare externa Reprezentare interna in binar
12345 0011000000111001
123456789 00000111010110111100110100010101
12345L 00000000000000000011000000111001

O constanta zecimala are tipul unsigned daca se termina prin litera U sau u. O astfel de constanta se reprezinta pe 16 biti daca nu este mai mare decat 65535 si pe 32 de biti in caz contrar. In cazul in care dorim ca o constanta intreaga fara semn mai mica decat 65536 sa fie reprezentata pe 32 de biti, constanta respectiva se va termina prin una din urmatoarele succesiuni de litere:

Constantele intregi fara semn pot fi utilizate pentru a economisi memorie. Astfel, constantele de tip int din intervalul [32768, 65535] se pastreaza pe 32 de biti, in vreme ce constantele de tip unsigned din acelasi interval se reprezinta pe 16 biti.

Exemple:

40000u constanta intreaga de tip unsigned reprezentata pe 16 biti;
40000U constanta intreaga de tip unsigned reprezentata pe 16 biti;
40000lu constanta intreaga de tip unsigned reprezentata pe 32 biti;
40000ul constanta intreaga de tip unsigned reprezentata pe 32 biti;
40000UL constanta intreaga de tip unsigned reprezentata pe 32 biti;
40000LU constanta intreaga de tip unsigned reprezentata pe 32 biti;

O constanta octala intreaga este o succesiune de cifre octale (0 - 7) precedata de un 0 nesemnificativ. O astfel de constanta se pastreaza pe 16 biti, daca acestia ii sunt suficienti si pe 32 in contrar. In cazul in care o costanta octala se termina prin L sau l, ea se pastreaza pe 32 de biti chiar daca sunt suficienti 16 biti pentru reprezentarea ei.

Constantele octale sunt de tip unsigned daca se reprezinta pe 16 biti si de tip unsigned long daca se reprezinta pe 32 de biti.

O constanta hexazecimala intreaga este o succesiune de cifre hexazecimale (0 - 7) precedate de 0x sau de 0X. In rest, ea are aceleasi proprietati ca si o constanta octala.

Cifrele hexazecimale se obtin extinzand cifrele zecimale cu litere mici sau mari din intervalul de la A la F.

Litera care reprezinta o cifra hexazecimala Valoare in zecimal
a sau A 10
b sau B 11
c sau C 12
d sau D 13
e sau E 14
f sau F 15

Exemple:

Constanta Tipul constantei Lungimea reprezentarii
123 constanta zecimala de tip int 16 biti
0123 constanta octala de tip unsigned 16 biti
40000 constanta zecimala de tip long 32 biti
040000 constanta octala de tip unsigned 16 biti
0123456 constanta octala de tip unsigned 16 biti
123L constanta zecimala de tip long 32 biti
0123l constanta octala de tip unsigned long 32 biti
0x123 constanta hexazecimala de tip unsigned 16 biti
0xa1b2c3 constanta hexazecimala de tip long unsigned 32 biti
0XABCFL constanta hexazecimala de tip long unsigned 32 biti

1.6. Constante - 1.6.2. Constante flotante