Principalele secțiuni ale programului de la p. Bazele limbajului C: structura unui program C, tipuri de bază și construcția de noi tipuri, operații și expresii

Programul C++ în sine este un fișier text în care constructele și operatorii unui anumit limbaj sunt prezentați în ordinea specificată de programator. În cel mai simplu caz, acest fișier text poate conține următoarele informații:

Lista 1.1. Un exemplu de program simplu.

/* Exemplu de program simplu */
#include
int main()
{
printf(„Bună lume!”);
întoarce 0;
}

și de obicei are o extensie cpp, de exemplu „ex1.cpp”.

Următorul pas este compilarea codului sursă. Compilarea este procesul prin care conținutul unui fișier text este convertit în cod de mașină executabil care poate fi înțeles de procesorul computerului. Cu toate acestea, compilatorul nu creează un program gata de execuție, ci doar cod obiect (un fișier cu extensia *.obj). Acest cod este un pas intermediar în crearea unui program terminat. Faptul este că programul creat poate conține funcții ale bibliotecilor standard ale limbajului C++, ale căror implementări sunt descrise în fișierele obiect ale bibliotecilor. De exemplu, programul de mai sus folosește funcția printf() a bibliotecii standard „stdio.h”. Aceasta înseamnă că fișierul obiect ex1.obj va conține doar instrucțiuni pentru apelarea acestei funcție, dar codul funcției în sine nu va fi acolo.

Pentru a se asigura că programul executabil final conține toate implementările necesare ale funcțiilor, se folosește un linker de cod obiect. Un linker este un program care combină codurile obiect ale programului creat, codurile obiect ale implementărilor funcțiilor bibliotecii și codul standard de pornire pentru un anumit sistem de operare într-un singur fișier executabil. Ca rezultat, atât fișierul obiect cât și fișierul executabil constau din instrucțiuni de cod de mașină. Cu toate acestea, fișierul obiect conține doar rezultatul traducerii în limbaj automat a textului programului creat de programator, iar fișierul executabil conține și codul mașină pentru rutinele standard de bibliotecă utilizate și pentru codul de pornire.

Să aruncăm o privire mai atentă la programul exemplu din Listarea 1.1. Prima linie specifică comentarii, adică comentarii pentru a vă ajuta să înțelegeți mai bine programul. Sunt doar pentru citire și ignorate de compilator. A doua linie conține directiva #include, care instruiește preprocesorul limbajului C++ să insereze conținutul fișierului „stdio.h” în locul acestei linii în timpul compilării. A treia linie definește o funcție numită main care returnează un număr întreg (tip int) și nu acceptă argumente (tip void). Funcția main() este o funcție necesară pentru toate programele C++ și, fără ea, apare un mesaj de eroare în etapa de compilare care indică absența acestei funcții. Această funcție este obligatorie datorită faptului că este punctul de intrare în program. În acest caz, punctul de intrare este funcția cu care începe și se termină programul. De exemplu, când rulați un fișier exe, funcția main() este activată, toate instrucțiunile incluse în acesta sunt executate și programul se termină. Astfel, logica întregului program este cuprinsă în această funcție. În exemplul de mai sus, atunci când funcția main() este apelată, este apelată funcția printf(), care afișează mesajul „Hello World!” pe ecranul monitorului, iar apoi este executată instrucțiunea return, care returnează o valoare nulă. Acest număr este returnat de funcția main() în sine sistemului de operare și înseamnă finalizarea cu succes a programului. Acoladele () sunt folosite pentru a defini începutul și sfârșitul corpului funcției, de exemplu. ele conţin toţi operatorii posibili care descriu funcţionarea acestei funcţii. Trebuie remarcat faptul că după fiecare operator în limbajul C++ există un simbol „;”. Astfel, exemplul dat arată structura generală a programelor C++.

C, precum variabilele statice și locale, matricele, pointerii, funcțiile etc., sunt cât mai apropiate de arhitectura computerelor reale. Deci, un pointer este doar o adresă de memorie, o matrice este o zonă adiacentă a memoriei, variabilele locale sunt variabile situate pe stiva hardware, variabilele statice sunt în memoria statică. Un programator care scrie în C are întotdeauna o idee destul de precisă despre cum va funcționa programul pe care îl creează pe orice arhitectură specifică. Cu alte cuvinte, limbajul C oferă programatorului control complet asupra computerului.

Limbajul C a fost conceput inițial ca un înlocuitor pentru limbajul de asamblare pentru scrierea sistemelor de operare. Deoarece C este un limbaj de nivel înalt care nu depinde de o anumită arhitectură, textul sistemului de operare a fost ușor de portat de la o platformă la alta. Primul sistem de operare scris aproape în întregime în C a fost Unix. În prezent, aproape toate sistemele de operare utilizate sunt scrise în C. În plus, instrumente de programare care sistem de operare oferă dezvoltatori de programe de aplicații (așa-numitul API - Application Program Interface) - acestea sunt seturi de funcții de sistem în limbajul C.

Cu toate acestea, domeniul de aplicare al limbajului C nu s-a limitat la dezvoltarea sistemelor de operare. Limbajul C s-a dovedit a fi foarte convenabil în programele de procesare a textului și imaginilor, în calculele științifice și de inginerie. Limbile orientate pe obiecte bazate pe C sunt excelente pentru programare în medii cu ferestre.

Această secțiune va oferi doar conceptele de bază ale limbajului C (și parțial C++). Acesta nu înlocuiește citirea unui manual complet C sau C++, cum ar fi cărțile și .

Vom folosi un compilator C++ în loc de C. Faptul este că limbajul C este aproape în întregime inclus în C++, adică. un program normal scris în C este un program C++ valid. Cuvântul „normal” înseamnă că nu conține constructe nefericite rămase din versiunile anterioare de C și care nu sunt utilizate în prezent. Compilatorul C++ este de preferat compilatorului C, deoarece are un control mai strict al erorilor. În plus, unele constructe C++ care nu sunt legate de programarea orientată pe obiecte sunt foarte convenabile și sunt de fapt o îmbunătățire a limbajului C. Acestea sunt, în primul rând, comentariile // , capacitatea de a descrie variabilele locale în orice punct al programului, și nu doar la începutul blocului, precum și setarea constantelor fără a utiliza operatorul #define al preprocesorului. Vom folosi aceste caracteristici ale C++, rămânând în esență în limbajul C.

Structura programului C

Orice program C suficient de mare (programatorii folosesc termenul proiect) constă din fișiere. Fișierele sunt traduse independent de compilatorul C și apoi combinate de programul task builder, rezultând un fișier cu un program gata de executat. Fișierele care conțin texte de program C sunt apelate original.

În limbajul C, există două tipuri de fișiere sursă:

  • antet sau fișiere h;
  • fișiere de implementare sau fișiere C.

Numele fișierelor antet au extensia „.h”. Numele fișierelor de implementare au extensia „.c” pentru limbajul C și „.cpp”, „.cxx” sau „.cc” pentru limbajul C++.

Din păcate, spre deosebire de limbajul C, programatorii nu au reușit să cadă de acord asupra unei singure extensii de nume pentru fișierele care conțin programe C++. Vom folosi extensia „.h” pentru fișierele antet și extensia „.cpp” pentru fișierele de implementare.

Fișiere antet conțin doar descrieri. În primul rând, acestea sunt prototipuri funcționale. Prototipul funcției descrie numele funcției, tipul returnării, numărul și tipurile argumentelor sale. Textul funcției în sine nu este conținut în fișierul h. De asemenea, fișierele h descriu numele și tipurile de variabile externe, constante, tipuri noi, structuri etc. În general, fișierele h conțin numai interfețe, adică informații necesare pentru a utiliza programe deja scrise de alți programatori (sau de același programator anterior). Fișierele antet oferă doar informații despre alte programe. La traducerea fișierelor antet, de regulă, nu sunt create obiecte. De exemplu, într-un fișier antet nu puteți defini variabilă globală. Linia de descriere

definirea unei variabile întregi x este o eroare. În schimb, ar trebui folosită descrierea

ceea ce înseamnă că variabila x este definită undeva în fișierul de implementare (care este necunoscut). Numai cuvântul extern (extern). raportează informații despre o variabilă externă, dar nu definește acea variabilă.

Dosare de implementare, sau fișierele C, conțin texte de funcții și definiții ale variabilelor globale. Pentru a spune simplu, fișierele C conțin programele în sine, în timp ce fișierele h conțin doar informații despre programe.

Reprezentarea codurilor sursă sub formă de fișiere antet și fișiere de implementare este necesară pentru crearea proiectelor mari care au o structură modulară. Fișierele antet sunt folosite pentru a transfera informații între module. Fișierele de implementare sunt module separate care sunt dezvoltate și traduse independent unele de altele și combinate pentru a crea un program executabil.

Fișierele de implementare pot include descrieri conținute în fișierele antet. Fișierele antet în sine pot folosi și alte fișiere antet. Fișierul antet este inclus folosind directiva #include preprocesor. De exemplu, descrierile funcțiilor standard I/O sunt incluse folosind linia

#include

(stdio - din cuvintele standard input / output). Numele fișierului h este scris între paranteze unghiulare dacă acest h-

În programele C există o anumită secvență:

Mai întâi, adăugăm bibliotecile de care avem nevoie #include Dacă fișierul se află în directorul actual al proiectului, acesta este indicat între ghilimele. Pentru un fișier aflat într-un alt director, trebuie să specificați calea completă între ghilimele.

#include
#include „math.h”

După care putem adăuga constantele de care avem nevoie #define A 3

După aceasta, funcția începe cu comanda Main()

După ce totul este făcut, puteți introduce getchar ()

2. La ce se folosește punctul și virgulă în limbajul C?

Un punct și virgulă este folosit pentru a indica sfârșitul unei declarații în C.

3. Toate compilatoarele C necesită utilizarea unei instrucțiuni return într-un program?

Pentru a returna o valoare întreagă, adăugați linia înainte ca funcția să se încheie

De asemenea, în majoritatea cazurilor returnare înseamnă părăsirea funcției

Instrucțiunile corpului funcției sunt executate înainte de prima instrucțiune return. Dacă nu există un astfel de operator în corpul funcției (adică funcția nu returnează niciun rezultat), atunci toți operatorii până la paranteza operatorului de închidere sunt executați.

Funcția de tipărire a elementelor matricei nu returnează niciun rezultat, adică. Nu există nicio instrucțiune return în corpul funcției.

4. În ce scop sunt introduse comentarii în textul programului?

Comentariile sunt introduse pentru a explica o anumită acțiune.

de exemplu Printf(''Hello World''); // afișează Hello World pe ecran

De asemenea, puteți introduce comentarii folosind simbolurile /* - la început */ - la sfârșitul comentariului

5. De ce sunt folosiți parametrii la apelarea unei funcții?

O legătură este în esență un al doilea nume pentru același obiect. Când un obiect este transmis unei funcții prin referință, acest obiect este de fapt transmis. Când trecem un obiect după valoare, o copie a acestuia este transmisă funcției.

void func_1(int a) // trecând după valoare

6. Toate funcțiile necesită transmiterea unor parametri atunci când sunt apelate?

După părerea mea, nu totul, pentru că putem scrie cu ușurință o funcție ca main() fără a trece parametri după valoare

1. Care este tipul de date char?

Tipul de date char este un tip de date întreg care este folosit pentru a reprezenta caractere. Adică, fiecărui caracter îi corespunde un anumit număr din interval. Tipul de date char este numit și tip de date caracter, deoarece reprezentarea grafică a caracterelor în C++ este posibilă datorită char. Pentru a reprezenta caractere în C++, tipului de date char i se alocă un octet, un octet conține 8 biți, apoi ridicăm doi la puterea lui 8 și obținem valoarea 256 - numărul de caractere care pot fi codificate. Astfel, folosind tipul de date char, puteți afișa oricare dintre cele 256 de caractere. Toate caracterele codificate sunt reprezentate într-un tabel ASCII.

2. Cum diferă simbolul „3” de numărul 3?

simbolul 3 diferă de întregul 3 prin faptul că simbolul nu poate fi utilizat în operații aritmetice

3. Care este diferența dintre o constantă și o variabilă?

Diferența dintre o variabilă și o constantă este destul de evidentă: în timpul execuției programului, valoarea unei variabile poate fi modificată (de exemplu, printr-o atribuire), dar valoarea unei constante nu poate

4. Cum se definește o constantă?

Constantele din C++ sunt similare cu constantele din C. Pentru a reprezenta o constantă în C, a fost folosită numai directiva #define preprocesor:

const typeVariableName = InitialValue;

Sfera unei constante este aceeași cu cea a unei variabile obișnuite. Puteți folosi cuvântul cheie const pentru a declara un pointer către o constantă

5. C suportă tipul de date șir?

Limbajul C nu acceptă un tip de date șir separat, dar permite definirea șirurilor în două moduri diferite. Primul folosește o matrice de caractere, iar al doilea folosește un pointer către primul caracter al matricei.

6. Variabila își păstrează valoarea pe toată durata execuției întregului program?

În timpul execuției programului, valoarea unei variabile poate fi modificată (de exemplu, folosind o atribuire), dar valoarea unei constante nu poate

7. Cum se schimbă valoarea unei constante?

1. Care sunt diferențele dintre secvențele de evadare \n și \r?

În linii mari, \r trebuia să resetați numărul caracterului. lăsând neschimbat numărul rândului (adică va muta căruciorul mașinii de scris la începutul liniei fără a atinge hârtia) și \n - dimpotrivă, se va trece la următoarea linie, lăsând neschimbată poziția curentă de imprimare (defilare hârtia fără a atinge căruciorul).

2. Cum să afișați caracterul „ghilimeleu” pe ecran?

printf("Textul meu este: \"textul meu\"\n");

3. Din ce două părți constă lista de parametri ai funcției printf()?

Când imprimați orice număr sau expresie, Printf() este scris mai întâi.

In paranteze, la inceput intre ghilimele, scriem datele de care avem nevoie si anume

%с – un singur caracter
%d – întreg zecimal cu semn
%f – număr în virgulă mobilă (notație zecimală)
%s – șir de caractere (pentru variabile șir)
%u – întreg zecimal fără semn
%% - tipăriți semnul procentului

De exemplu:

printf("x=%5i\ty=%f\tz=%7.3f\n",x, y, z);

4. Ce avantaje are printf() față de puts()?

5. Ce este un indicator de format?

Citește o valoare în virgulă mobilă (numai C99)

La fel ca %a (doar C99)

Citește un caracter

Citește un întreg zecimal

Citește un număr întreg în orice format (zecimal, octal sau hexazecimal)

La fel ca %e

Citește un număr în virgulă mobilă

Similar cu codul %f (doar C99)

Citește un număr în virgulă mobilă

La fel ca %g

Citește un număr octal

Citește un rând

Citește un număr hexazecimal

La fel ca codul %x

Citește indicatorul

Preia o valoare întreagă egală cu numărul de caractere citite până acum

Citește un întreg zecimal fără semn

Vizualizează un set de caractere

Citește semnul procentului

6. Cum se afișează valoarea unei variabile numerice?

Puteți imprima valoarea acesteia folosind funcția Printf().

printf("%7.3f\t%7.3f\n",x,y);

%<количество_позиций_под_значение>.<количество_позиций_под_дробную_часть>f

%<количество_позиций_под_значение>i

Înainte de a începe să scrieți programe, trebuie să studiați structura programelor în limbajul de programare C++. Cu alte cuvinte, structura programului este aspectul spațiului de lucru (zona de cod) pentru a defini clar blocurile și sintaxa principale ale programului. Structura programelor diferă ușor în funcție de mediul de programare. Ne concentrăm pe Microsoft Visual Studio IDE și, prin urmare, exemple de programe vor fi afișate special pentru MVS. Dacă utilizați un alt IDE, nu veți avea nicio problemă la portarea codului din MVS în alte medii de dezvoltare și, în cele din urmă, vă veți da seama cum să faceți acest lucru.

Structura programului pentru Microsoft Visual Studio.

// struct_program.cpp: Definește punctul de intrare pentru aplicația consolă. #include "stdafx.h" // aici includem toate directivele de preprocesor necesare int main() ( // începutul funcției principale numită main // codul programului dvs. va fi localizat aici)

Linia 1 vorbește despre punctul de intrare pentru o aplicație de consolă, ceea ce înseamnă că acest program poate fi lansat prin linia de comandă Windows specificând numele programului, de exemplu, struct_program.cpp. Linia 1 este un comentariu de o linie, deoarece începe cu caracterele // vom vorbi mai multe despre comentarii în articolul următor. Linia 2 include fișierul antet „stdafx.h”. Acest fișier este similar cu un container, deoarece conține directivele principale ale preprocesorului (cele incluse de compilator la crearea aplicației de consolă), precum și directivele auxiliare (conectate de programator) și pot fi incluse.

include este o directivă de preprocesor, adică un mesaj către preprocesor. Liniile care încep cu simbolul # sunt procesate de preprocesor înainte ca programul să fie compilat.

Directivele de preprocesor pot fi, de asemenea, incluse în linii, începând după intrarea #include „stdafx.h” înainte de începerea funcției principale. Mai mult, această metodă de conectare a bibliotecilor este cea principală, iar utilizarea „stdafx.h” este o opțiune suplimentară pentru conectarea fișierelor de antet, care este disponibilă numai în MVS. De la rândurile 4 la 6, funcția principală este declarată. Linia 4 este antetul funcției, care constă din tipul de returnare (int în acest caz) al funcției și numele funcției, precum și din paranteze în care sunt declarați parametrii funcției.

int — tip de date întreg

Între acolade se află codul principal al programului, numit și corpul funcției. Aceasta este cea mai simplă structură de program. Această structură a fost scrisă în Microsoft Visual Studio. Toate cele de mai sus rămân valabile pentru alte compilatoare, cu excepția liniei 2. Containerul „stdafx.h” nu există nicăieri în afară de MVS.

Structura programului pentru C++ Builder.

Când creați o aplicație consolă, Expertul New Project generează automat următorul cod:

//directiva preprocesor inclusă automat de vrăjitorul de creare a proiectului #include int main() ( returnează 0; )

Vedem că tipul de date al funcției este int. Aceasta înseamnă că, la finalizare, funcția va returna un fel de valoare întreagă, în cazul nostru 0. Integer deoarece int este un tip de date pentru numere întregi, cum ar fi 4, 5, 6, 456, 233 etc.

Principalul lucru de reținut este că, dacă tipul de date return al funcției principale este int sau orice altceva decât void, atunci ar trebui să scrieți o linie ca aceasta: return<возвращаемое значение>;

În linia 2 este inclusă biblioteca vcl.h - este inclusă automat de expertul de creare a aplicației, deci nu ar trebui să o ștergeți, altfel proiectul nu va funcționa.

În general, vrăjitorul creează automat o structură de program care este ușor diferită de cele pe care le-am considerat, dar esența rămâne aceeași.

De exemplu:

Int main(int argc, char* argv) ( return 0; )

Acest exemplu de structură este generat de expert în MVS2010. Acest principal este puțin diferit. O vom analiza mai în detaliu mai târziu, dar voi spune că acest element principal arată astfel, deoarece a fost conceput inițial pentru a suporta Unicode.

Unicode este un standard de codificare a caracterelor care permite reprezentarea caracterelor în aproape toate limbile scrise. Vom vorbi mai multe despre Unicode mai târziu.

Există diferite versiuni ale main , dar nu este nimic în neregulă cu asta, deoarece main era funcția principală, așa că rămâne așa, așa că tot ceea ce s-a spus mai sus rămâne relevant.

Un exemplu de structură a unui program MVS cu biblioteci conectate.

#include „stdafx.h” #include folosind namespace std; int main() ( )

Numele bibliotecilor conectate este scris în interiorul simbolurilor mai mare și mai mică. Fișierele antet și numele bibliotecilor incluse sunt sinonime.

Sintaxă pentru includerea fișierelor de antet:

#include<имя заголовочного файла>

Fișierele antet mai vechi sunt incluse astfel (acest stil de conectare a bibliotecilor este moștenit din limbajul de programare C):

#include<имя заголовочного файла.h>

Diferența este că numele este urmat de extensia .h .

Limbajul de programare C++ este sensibil la majuscule. De exemplu:
Întoarce 0; – nu este corect, va exista o eroare de compilare.
întoarce 0; - Dreapta!!!

Acest articol examinează structurile programelor C++ în medii precum MVS și Borland. Și așa cum ați observat deja, aceste structuri sunt aproape aceleași. Prin urmare, acest articol este relevant pentru orice IDE. Dacă nu v-ați decis încă cu privire la alegerea IDE-ului, citiți.

Orice program scris în limbajul C constă dintr-una sau mai multe „funcții”, care sunt principalele module din care este asamblat.

Un exemplu de structură a unui program simplu C:

Forma generală

Exemplu

directive de preprocesor

#include

# definiți N 10

numele funcției principale

începutul corpului funcției principale

declarații de variabile și tablouri

int x=1; char str[N];

declarații de program

pune("introduce Nume");

obţine(str);

printf("\n %s, ești %d oaspetele meu!",str,x);

Sfârșitul corpului funcției principale

      1. Directive privind preprocesorul

O parte a compilatorului este un program numit preprocesor. Preprocesorul funcționează înainte ca programul să fie tradus dintr-un limbaj de nivel înalt în limbajul mașinii, efectuând conversia sa preliminară. Fiecare directivă de preprocesor începe cu un caracter # (număr) și se întinde pe întreaga linie. Directivele care nu se potrivesc pe o linie pot fi continuate pe linia următoare. Semnul de continuare a liniei este caracterul bară oblică inversă (\) din linia care urmează să fie continuată.

Cea mai des folosită directivă este includerea unui fișier într-un program

# include < Nume>

Unde Nume– numele fișierului inclus în textul programului.

Această directivă se numește directivă de substituție . Instruiește compilatorului să plaseze fișierul în locul său Nume. Fişier Nume numit antet. Conține declarații de date și funcții utilizate în program. De exemplu, includerea în program a directivei

# include < matematica. h>

vă va permite să utilizați funcții matematice standard în program, cum ar fi sin x, cos x, ln x etc. O listă de funcții matematice standard va fi dată mai jos.

Directivă

# include < stdio. h>

face posibilă utilizarea funcțiilor standard de intrare/ieșire în program.

O altă directivă folosită în mod obișnuit este directiva de definire

#define S1 S2

Unde S1, S2– șiruri de caractere.

Preprocesorul găsește un șir de caractere în textul programului S1 și îl înlocuiește cu șirul S2 . De exemplu, includerea în program a directivei

# defini P printf

vă permite să introduceți o literă pe tastatură Pîn locul cuvântului printf.

Această înlocuire nu este efectuată în interiorul șirurilor de text (literale), constantelor de caractere și comentariilor, de exemplu. acțiunea directivei # defini nu se aplică textelor delimitate de ghilimele, apostrofe și celor cuprinse în comentarii.

      1. Functie principala

Fiecare program C trebuie să conțină o declarație de funcție principal(), care se numește funcția principală . De obicei, această funcție nu are parametri și nu returnează nicio valoare. Cuvântul folosit pentru a indica acest fapt este gol. Astfel, linia cu numele funcției principale arată de obicei astfel:

void main(void)

void main()

      1. Variabile și tablouri

O matrice este un grup de variabile de același tip cu un nume comun. Numele unei variabile sau al unui tablou este un identificator - o secvență alcătuită din caractere:

a – z, A - Z, 0 – 9,_(subliniere),

Mai mult, primul caracter nu poate fi un număr. Literele mici și majuscule ale alfabetului latin sunt percepute ca caractere diferite. Cuvintele cu funcții în limbajul C nu pot fi folosite ca nume de variabilă sau de matrice. Cuvintele cu funcții principale ale limbajului C sunt date în Anexă.

Elementele matricei se disting prin numerele lor (indici). Indicele poate accepta numai valori întregi nenegative. Indexul este scris după numele tabloului între paranteze drepte. Pot exista mai mulți indici. În acest caz, fiecare index este scris în propriile paranteze pătrate.

Limbajul C poate folosi variabile și matrice de diferite tipuri. Fiecare tip de date ocupă un anumit număr de octeți de memorie și poate lua valori dintr-un anumit interval. Volumul acestei memorii și, în consecință, gama de valori acceptate în diferite implementări ale limbajului C pot varia. Numărul de octeți de memorie ocupați de o variabilă de un anumit tip pentru o implementare specifică a limbajului C poate fi determinat folosind operația dimensiunea(tip). De exemplu, puteți determina cantitatea de memorie alocată pentru o variabilă de tip întreg, astfel:

k = dimensiunea(int);

printf(„Sub o variabilă de tipint%d octeți de memorie sunt alocați”,k);

Aceste linii directoare discută trei tipuri principale de variabile și matrice și oferă valori tipice pentru cantitatea de memorie ocupată și intervalul de valori (Tabelul 1):

tabelul 1

Specificator de tip (cuvânt cheie)

Sens

mărimea

memorie (octet)

Gama de valori

Număr întreg

32768 . . . +32767

2147483648 . . . +2147483647

Valabil

Numar real

3.4-10 -38. . . 3.4-10 38

(modulo)

Simbolic

128 . . . +127

Să aruncăm o privire mai atentă asupra variabilei tip char. După cum se vede din tabel. 1, tip variabilă char ocupă un octet de memorie. Un octet de memorie poate conține fie un număr întreg fără semn din intervalul , fie un număr întreg cu semn din intervalul [–128, 127]. Acest număr este codul pentru unul din 256 de caractere. Caracterul corespunzător unui cod dat este determinat de tabelul de coduri utilizat. Astfel, valoarea unei variabile ca char poate fi tratat fie ca un număr întreg, fie ca un caracter al cărui cod este egal cu acel număr.