Tipuri de date reale în limbaj c. Prefixe ale tipurilor de date întregi. Declararea și inițializarea variabilelor

Vă rugăm să suspendați AdBlock pe acest site.

Pentru a stoca orice date în program, aveți nevoie de variabile. În primul rând, trebuie să învățați cum să creați aceste variabile în program. Cu alte cuvinte, amintindu-ne de analogia noastră cu cutiile, pentru a pune ceva într-o cutie, chiar această cutie, ar fi bine să o luăm mai întâi undeva.

În cărțile de programare, procesul de creare a unei variabile este numit declarație variabilă. Ar fi bine să cunoașteți această frază pentru a înțelege literatura profesională și vorbirea altor programatori. Dar este și mai important să înțelegem ce se ascunde în spatele acestei fraze.

Cum se declară o variabilă?

Pentru a declara o variabilă, trebuie să specificați tipul acesteia și să scrieți numele acesteia. Ei bine, nu uitați să puneți „;”. Structura generală a unei declarații de variabilă este prezentată în figura următoare.

Fig.1. Sintaxă generală pentru declararea unei variabile."

În exemplul din figură, creăm o variabilă numită num, care poate stoca numere întregi. Tipul de date int indică faptul că vom folosi variabila pentru a stoca numere întregi.

Încă câteva exemple:

Listarea 1. Declararea variabilelor

Int z; // variabila z de tip întreg char w; // variabila w de tip de caracter

Există o regulă pentru numele variabilelor pe care va trebui să o amintiți.

Numele variabilei poate fi orice succesiune de caractere latine, numere și liniuța de subliniere „_” care începe cu o literă.

De fapt, pentru numele variabilei există restricții suplimentare, dar nu vom intra în astfel de detalii deocamdată. Să ne uităm mai bine la exemple de nume corecte și incorecte.

Nume corecte variabile

Peremennaya, steag, f3, var4, KolichestvoBukv, fd4s, FLaG, key_number

Nume de variabile incorecte

2num – începe cu un număr
num flat – conține un spațiu în nume
nomer-telefona – conține o cratimă

Și încă unul punct important. În limbajul de programare C, literele majuscule sunt foarte importante. De exemplu, variabilele numite flag, FLAG, Flag, flag sunt toate variabile diferite. În plus, există o serie de cuvinte care nu pot fi folosite pentru a denumi variabile. De exemplu, int, void, return și altele. Acestea sunt cuvinte cheie speciale care sunt rezervate nevoilor limbii în sine și nu pot fi folosite nicăieri altundeva.

Apropo, într-o singură declarație puteți crea mai multe variabile de același tip simultan.

Listarea 2. Declararea mai multor variabile

Int a,c; // declar variabilele a și c de tip întreg dublu x, y, z; // declar trei variabile reale simultan

Totul este simplu și logic. Mai întâi indică tipul de variabile, apoi numele acestora, separate prin virgulă.

Variabilă în memoria computerului.

Câteva cuvinte despre cum arată o declarație de variabilă din punctul de vedere al unui computer.

Putem considera că atunci când declarăm, îi spunem computerului să aloce un loc în memorie variabilei și să asociem acest loc cu un nume specific. Cantitatea de spațiu care va fi alocată în memorie pentru a stoca o variabilă depinde de tipul acelei variabile. Să ilustrăm această idee cu următoarea figură.

Listarea 3. Declararea a două variabile

Int w; // declara o variabila intreaga w dublu z; // declară o variabilă reală z

Fig.3. Variabile în memoria computerului.

Figura ilustrează în mod convențional memoria computerului ca un set de celule, fiecare dintre acestea putând stoca ceva. În acest caz, o variabilă reală ocupă două celule, iar o variabilă întreagă doar una. Acest raport (două la unu) este condiționat. De fapt, pe computer, o variabilă reală poate ocupa, de exemplu, de patru ori mai mult spațiu de memorie decât o variabilă întreagă.

Practică

Rezolvați problemele propuse: pentru ușurință în lucru, treceți imediat la modul ecran complet

Sarcini de cercetare pentru hackeri

  1. Declarați o variabilă în programul dvs. cu nume gresitși încercați să compilați programul. Vezi ce eroare dă compilatorul.
  2. Găsiți o listă cu toate cuvintele cheie în limbajul C. Puteți căuta în standardul de limbă (hint: „cuvinte cheie”) sau pe Internet. Nu trebuie să le memorați, dar merită să le priviți o dată.

Variabilele sunt folosite pentru a stoca diverse date în limbaje de programare. O variabilă este o zonă de memorie care are un nume, altfel numit identificator.

Dând un nume unei variabile, programatorul numește în același timp zona de memorie în care valorile variabilei vor fi scrise pentru stocare.

Este un stil bun să numești variabilele în mod semnificativ. Este permisă utilizarea literelor mici și mari, a cifrelor și a liniuței de subliniere, care este considerată o literă în C. Primul caracter trebuie să fie o literă și nu trebuie să existe spații în numele variabilei. ÎN versiuni moderne compilatoarele nu au practic nicio limită în ceea ce privește lungimea numelui. Numele variabilei nu poate corespunde cuvintelor cheie rezervate. Capital şi literă mică numele variabilelor diferă, variabile AȘi A- variabile diferite.

Cuvinte cheie rezervate auto double int struct break else long comutare registru tupedef char extern return void case float unsigned implicit pentru uniunea semnată do if sizeof volatile continue enumerarea scurtă
În C, toate variabilele trebuie declarate. Aceasta înseamnă că, în primul rând, la începutul fiecărui program sau funcție trebuie să furnizați o listă cu toate variabilele utilizate și, în al doilea rând, să indicați tipul fiecăreia dintre ele.

Când o variabilă este declarată, compilatorul îi alocă spațiu de memorie în funcție de tipul acesteia. Prin mijloace standard AVR GCC funcționează cu tipuri de date char(tip de caracter) și int(tip întreg).

Tipuri variabile

Tastați char

char- este cel mai economic tip. Tipul de caracter poate fi semnat sau nesemnat. Notat în consecință ca „ semnat char„ (tip semnat) și „ nesemnat char" (tip nesemnat). Tipul semnat poate stoca valori în intervalul de la -128 la +127. Unsigned - de la 0 la 255. O variabilă char are 1 octet de memorie (8 biți).

Cuvinte cheie (modificatoare) semnatȘi nesemnat indicați cum este interpretat bitul zero al variabilei declarate, adică dacă este specificat cuvântul cheie fără semn, atunci bitul zero este interpretat ca parte a unui număr, în caz contrar bitul zero este interpretat ca semn.

Tastați int

Valoare intreaga int Pot fi mic de statura(scurt) sau lung(lung).

Cuvânt cheie (modificator) mic de statura plasat după cuvinte cheie semnat sau nesemnat. Astfel, se disting următoarele tipuri: signed short int, unsigned short int, signed long int, unsigned long int.

Variabila de tip semnat scurt int(întreg scurt cu semn) poate lua valori de la -32768 la +32767, nesemnat scurt int(întreg scurt fără semn) - de la 0 la 65535. Pentru fiecare dintre ei sunt alocați exact doi octeți de memorie (16 biți).

La declararea unei variabile de tip semnat scurt int Cuvinte cheie semnatȘi mic de statura poate fi omis, iar un astfel de tip de variabilă poate fi declarat simplu int. De asemenea, este posibil să declarați acest tip cu un singur cuvânt cheie mic de statura.

Variabil nesemnat scurt int poate fi declarat ca nesemnat int sau scurt nesemnat.

Pentru fiecare dimensiune semnat lung int sau nesemnat lung int Sunt alocați 4 octeți de memorie (32 de biți). Valorile variabilelor de acest tip pot fi în intervalele de la -2147483648 la 2147483647 și, respectiv, de la 0 la 4294967295.

Există și variabile precum lung lung int, pentru care sunt alocați 8 octeți de memorie (64 de biți). Ele pot fi, de asemenea, semnate sau nesemnate. Pentru un tip semnat, intervalul de valori este de la -9223372036854775808 la 9223372036854775807, pentru un tip nesemnat - de la 0 la 18446744073709551615. Un tip semnat poate fi declarat pur și simplu prin două cuvinte cheie lung lung.

Tip Gamă Gama hexagonală mărimea
nesemnat char 0 ... 255 0x00...0xFF 8 biți
semnat char
sau pur și simplu
char
-128 ... 127 -0x80...0x7F 8 biți
nesemnat scurt int
sau pur și simplu
nesemnat int sau scurt nesemnat
0 ... 65535 0x0000 ... 0xFFFF 16 biți
semnat scurt int sau semnat int
sau pur și simplu
mic de statura sau int
-32768 ... 32767 0x8000 ... 0x7FFF 16 biți
nesemnat lung int
sau pur și simplu
nesemnat lung
0 ... 4294967295 0x00000000 ... 0xFFFFFFFF 32 de biți
semnat lung
sau pur și simplu
lung
-2147483648 ... 2147483647 0x80000000 ... 0x7FFFFFFF 32 de biți
nesemnat lung lung 0 ... 18446744073709551615 0x0000000000000000 ... 0xFFFFFFFFFFFFFFFFFF pe 64 de biți
semnat lung lung
sau pur și simplu
lung lung
-9223372036854775808 ... 9223372036854775807 0x8000000000000000 ... 0x7FFFFFFFFFFFFFFFF pe 64 de biți

Variabilele sunt declarate într-o declarație. O instrucțiune de declarație constă dintr-o specificație de tip și o listă de nume de variabile separate prin virgulă. Trebuie să existe un punct și virgulă la sfârșit.

O declarație de variabilă are următorul format:

[modificatoare] tip_specificator identificator [, identificator] ...

Modificatori- Cuvinte cheie semnat, nesemnat, mic de statura, lung.
Specificator de tip- cuvânt cheie char sau int, care determină tipul variabilei declarate.
Identificator- numele variabilei.

Exemplu: char x; int a, b, c; nesemnat long long y;
În acest fel variabilele vor fi declarate X, A, b, c, y. La o variabilă X se vor putea scrie valori de la -128 la 127. În variabile A, b, c- de la -32768 la +32767. La o variabilă y- de la 0 la 18446744073709551615.

Inițializarea valorii unei variabile la declarare

Când este declarată, o variabilă poate fi inițializată, adică i se poate atribui o valoare inițială. Puteți face acest lucru după cum urmează. int x = 100; Astfel, în variabilă X Când este anunțat, numărul 100 va fi imediat notat.

Este mai bine să evitați amestecarea variabilelor inițializate într-o singură declarație, adică este mai bine să declarați variabilele inițializate pe linii separate.

constante

O variabilă de orice tip poate fi declarată nemodificabilă. Acest lucru se realizează prin adăugare cuvânt cheie const la specificatorul de tip. Variabile cu tip const sunt date numai pentru citire, ceea ce înseamnă că variabilei nu i se poate atribui o nouă valoare. Dacă după cuvânt const Dacă nu există un specificator de tip, atunci constantele sunt tratate ca valori semnate și li se atribuie un tip int sau lung intîn funcție de valoarea constantei: dacă constanta este mai mică de 32768, atunci i se atribuie tipul int, in caz contrar lung int.

Exemplu: const long int k = 25; const m = -50; // implicit const int m=-50 const n = 100000; // implicit const long int n=100000

Misiune

Semnul „=" este folosit pentru atribuire în C. Se evaluează expresia din dreapta semnului de atribuire, iar valoarea rezultată este atribuită variabilei din stânga semnului de atribuire. În acest caz, valoarea anterioară stocată în variabilă este ștearsă și înlocuită cu una nouă.

Operatorul „=" nu trebuie înțeles ca egalitate.
De exemplu, expresia a = 5; ar trebui citit ca „atribuiți variabila a la 5”.

Exemple: x = 5 + 3; // adăugați valorile 5 și 3, // atribuiți rezultatul variabilei x (scrieți variabilei x) b = a + 4; // adăugați 4 la valoarea stocată în variabila a, // atribuiți rezultatul rezultat variabilei b (scrieți variabilei b) b = b + 2; // adăugați 2 la valoarea stocată în variabila b, // atribuiți rezultatul rezultat variabilei b (scrieți variabilei b)
În partea dreaptă, valoarea variabilei poate fi folosită de mai multe ori: c = b * b + 3 * b;

Exemplu: x = 3; // variabilei x i se va atribui valoarea 3 y = x + 5; // numărul 5 va fi adăugat la valoarea stocată în variabila x, // rezultatul rezultat va fi scris în variabila y z = x * y; // valorile variabilelor x și y vor fi înmulțite, // rezultatul va fi scris în variabila z z = z - 1; // 1 va fi scăzut din valoarea stocată în variabila z // rezultatul va fi scris în variabila z
Astfel, în variabila z numărul 23 va fi stocat

Cu exceptia operator simplu atribuiri "=", în C există mai mulți operatori de atribuire combinați: "+=", "-=", "*=
Exemple: x += y; // la fel ca x = x + y; - se adaugă x și y // și se scrie rezultatul la variabila x x -= y; // la fel ca x = x - y; - se scade valoarea y din x // si se scrie rezultatul in variabila x x *= y; // la fel ca x = x * y; - înmulțiți x cu y // și scrieți rezultatul în variabila x x /= y; // la fel ca x = x / y; - împărțiți x la y // și scrieți rezultatul în variabila x x %= y; // la fel ca x = x % y; // se calculează restul întreg la împărțirea x la y // și se scrie rezultatul în variabila x

Creștere și descreștere

Dacă trebuie să modificați valoarea unei variabile la 1, atunci utilizați creştere sau scăderea.

Creştere- operația de creștere a valorii stocate într-o variabilă cu 1.

Exemplu: x++; // valoarea variabilei x va fi mărită cu 1$WinAVR = ($_GET["avr"]); if($WinAVR) include($WinAVR);?>
Decrementează- operația de scădere a valorii stocate într-o variabilă cu 1.

Exemplu: x--; // valoarea variabilei x va fi redusă cu 1
Creșterea și descreșterea sunt operatori de atribuire. Când utilizați decrementarea și creșterea împreună cu operatorul de atribuire "=", utilizați notația postfix (x++) sau prefix (++x). Prefixul este executat mai întâi.

Exemple: y = x++;
Să presupunem că în variabilă X valoarea 5 a fost stocată y se va scrie valoarea 5, după care valoarea variabilei X va fi majorat cu 1. Astfel, in y va fi 5, iar în X- 6. y = --x;
Dacă în X Dacă valoarea 5 a fost stocată, atunci decrementarea va fi efectuată mai întâi X la 4 și apoi această valoare va fi atribuită variabilei y. Prin urmare, XȘi y i se va atribui valoarea 4.

Tipuri de date. Un program în limbaje procedurale, care include C, este o descriere a operațiilor asupra cantităților tipuri variate. Un tip definește setul de valori pe care o valoare le poate lua și setul de operațiuni la care poate participa.

În limbajul C, tipurile sunt asociate cu nume (identificatori) de cantități, adică cu variabile. O variabilă în limbajul C este asociată cu o locație de memorie. Tipul unei variabile specifică dimensiunea celulei, modul în care este codat conținutul acesteia și transformările acceptabile ale valorii acestei variabile. Toate variabilele trebuie declarate înainte de a fi utilizate. Fiecare variabilă trebuie declarată o singură dată.

Descrierea constă dintr-un specificator de tip urmat de o listă de variabile. Variabilele din listă sunt separate prin virgulă. Un punct și virgulă este plasat la sfârșitul descrierii.

Exemple de descrieri:

char a,b; /* Variabilele a și b au tip

char */ intх; /* Variabila x - tastați int

*/ char sym; /" Sunt descrise variabile sym de tip char;

*/ int count.num; /* num și număr de tip int */

Variabilelor li se pot atribui valori inițiale în cadrul declarațiilor lor. Dacă un nume de variabilă este urmat de un semn egal și de o constantă, atunci acea constantă servește ca inițializator.

Exemple: char backch = "\0";

Să ne uităm la principalele tipuri din limbajul C.

int - întreg („întreg”). Valorile de acest tip sunt numere întregi dintr-un interval limitat (de obicei de la 32768 la 32767). Intervalul este determinat de dimensiunea celulei pentru tip și depinde de calculator specific. În plus, există cuvinte funcționale care pot fi folosite cu tipul int: short int („short integer” - „short integer”), unsigned int („unsigned integer” - „unsigned integer”), long int („long integer”) ” ), care reduc sau, dimpotrivă, extind domeniul de reprezentare a numerelor.

char- caracter („personaj”). Valoare admisă pentru acest tip - un caracter (a nu se confunda cu text!). Simbolul este scris cu apostrofe.

Exemple:"x"2"?"

În memoria computerului, un caracter ocupă un octet. De fapt, nu este un simbol care este stocat, ci un număr - codul simbolului (de la 0 la 255). Tabelele speciale de codificare indică toate caractere valideși codurile lor corespunzătoare.

În limbajul C este permisă utilizarea tipului char ca unul numeric, adică efectuarea de operații cu codul caracterului, folosind specificatorul de tip întreg între paranteze - (int).

float - real (virgula flotantă). Valorile de acest tip sunt numere, dar, spre deosebire de char și int, nu neapărat numere întregi.

12.87 -316.12 -3.345e5 12.345e-15

dublu - numere reale precizie dubla. Acest tip este similar cu tipul float, dar are semnificativ gamă mai mare valori (de exemplu, pentru sistemul de programare Borland-C de la 1.7E-308 la 1.7E+308 în loc de intervalul de la 3.4E-38 la 3.4E+38 pentru tipul float). Cu toate acestea, creșterea intervalului și acurateței reprezentării numerelor duce la o scădere a vitezei de execuție a programului și la utilizarea risipitoare. memorie cu acces aleator calculator.


Rețineți că nu există niciun tip de șir în această listă. Nu există un tip special în C care să poată fi folosit pentru a descrie șiruri. În schimb, șirurile de caractere sunt reprezentate ca o matrice de elemente char. Aceasta înseamnă că caracterele din șir vor fi localizate în celulele de memorie adiacente.

Trebuie remarcat faptul că ultimul element al tabloului este caracterul \0. Acesta este caracterul „null”, iar în limbajul C este folosit pentru a marca sfârșitul unui șir. Caracterul nul nu este numărul 0; nu este tipărit și are numărul 0 în tabelul de coduri ASCII Prezența unui caracter nul înseamnă că numărul de celule din matrice trebuie să fie. De macar, cu unul mai mult decât numărul de caractere care trebuie stocate în memorie.

Să dăm un exemplu de utilizare a șirurilor.

Programul 84

#include principal()

scanf("%s",șir);

printf("%s",șir);

Acest exemplu descrie o matrice de 31 de locații de memorie, dintre care 30 pot conține un singur element char. Se introduce la apelarea funcţiei scanf("%s",string); „&” lipsește când se specifică o matrice de caractere.

Indicatoare. Un pointer este o reprezentare simbolică a adresei unei locații de memorie alocată pentru o variabilă.

De exemplu, &name este un pointer către variabila nume;

Iată și operațiunea de obținere a unei adrese. Adresa reală este un număr, iar reprezentarea simbolică a adresei &nume este o constantă pointer.

Limbajul C are, de asemenea, variabile de tip pointer. La fel cum valoarea unei variabile char este un caracter, iar valoarea unei variabile int este un întreg, valoarea unei variabile pointer este adresa unei anumite valori.

Dacă dăm indicatorului numele ptr, putem scrie o declarație ca aceasta:

ptr = /* atribuie numele adresei variabilei ptr */

Spunem în acest caz că prt este un nume „indicator către”. Diferența dintre cele două notații: ptr și &name este că prt este o variabilă, în timp ce &name este o constantă. Dacă este necesar, puteți face ca variabila ptr să indice un alt obiect:

ptr= /* ptr indică bah, nu nume */

Acum valoarea variabilei prt este adresa variabilei bah. Să presupunem că știm că variabila ptr conține o referință la variabila bah. Apoi, pentru a accesa valoarea acestei variabile, puteți folosi operația de „adresare indirectă” *:

val = *ptr; /* definește valoarea indicată de ptr */ Ultimele două instrucțiuni luate împreună sunt echivalente cu următoarele:

Deci, când în spatele semnului & urmat de numele variabilei, rezultatul operației este adresa variabilei specificate; &nurse dă adresa variabilei asistentă; când un * este urmat de un pointer către o variabilă, rezultatul operației este valoarea plasată în locația de memorie la adresa specificată.

Exemplu: asistent medical = 22;

ptr = /* indicator catre asistenta */

Rezultatul este atribuirea valorii 22 variabilei val.

Nu este suficient să spunem că o variabilă este un pointer. În plus, este necesar să se indice la ce tip de variabilă se referă acest indicator. Motivul este că variabilele de diferite tipuri preiau număr diferit locații de memorie, în timp ce unele operațiuni legate de pointer necesită cunoașterea cantității de memorie alocată.

Exemple descriere corecta pointeri: int *pi; char *buc;

Specificația de tip specifică tipul variabilei la care se referă pointerul, iar caracterul * identifică variabila în sine ca indicator. Descrierea tipului int *pi; spune că pi este un pointer și că *pi este o valoare int.

Limbajul C oferă posibilitatea de a defini numele tipurilor de date. Puteți atribui un nume oricărui tip de date folosind un typedef și puteți utiliza acest nume mai târziu când descrieți obiecte.

Format: typedef<старый тип> <новый тип> Exemplu: typedef long LARGE; /* definește tipul mare, care este echivalent cu tipul lung */

Un typedef nu introduce niciun tip nou, ci doar adaugă un nume nou unui deja tip existent. Variabilele declarate în acest fel au exact aceleași proprietăți ca și variabilele declarate explicit. Redenumirea tipurilor este folosită pentru a introduce nume de tip semnificative sau abreviate, ceea ce îmbunătățește înțelegerea programelor și pentru a îmbunătăți portabilitatea programelor (numele pentru același tip de date pot diferi pe computere diferite).

Operațiuni. Limbajul C se distinge printr-o mare varietate de operații (mai mult de 40). Aici le vom lua în considerare doar pe cele principale, tabelul. 3.3.

Operatii aritmetice. Acestea includ

Adăugați(+),

Scădere (binară) (-),

Înmulțirea (*),

Divizia (/),

Restul întregii diviziuni (%),

Scădere (unară) (-) .

Limbajul C are o regulă: dacă dividendul și divizorul sunt de tip int, atunci împărțirea este efectuată în întregime, adică partea fracțională a rezultatului este aruncată.

Ca de obicei, în expresii, operațiile de înmulțire, împărțire și rest sunt efectuate înainte de adunare și scădere. Pentru a schimba ordinea acțiunilor, utilizați paranteze.

Programul 85

#include

5 = -3 + 4 * 5 - 6; printf("%d\n",s);

s = -3 + 4%5 - 6; printf("%d\n",s);

s = -3 * 4% - 6/5; printf("%d\n",s);

s= (7 + 6)%5/2; printf("%d\n",s);

Rezultatul execuției programului: 11 1 0 1

Tabelul 3.3 Precedenta si ordinea operatiilor

Pe lângă împărțirea datelor în variabile și constante, există o clasificare a datelor după tip. Descrierea variabilelor constă în primul rând în declararea tipului acestora. Tipul de date caracterizează intervalul valorilor sale și forma de reprezentare în memoria computerului. Fiecare tip este caracterizat de un set de operații efectuate asupra datelor. În mod tradițional, în limbajele de programare universale există așa ceva tipuri standard, ca întreg, real, simbolic și logic 3. Să notăm imediat că tip boolean nu in C. O expresie (în cazul particular, o variabilă) este considerată adevărată dacă este diferită de zero, în caz contrar este considerată falsă.

Existența a două tipuri numerice (întreg și real) este asociată cu două forme posibile de reprezentare a numerelor în memoria computerului.

Date întreg tip stocate sub formă de prezentare punct fix. Se caracterizează prin acuratețe absolută în reprezentarea numerelor și efectuarea de operații asupra acestora, precum și o gamă limitată de valori numerice. Tipul întreg este folosit pentru datele care, în principiu, nu pot avea o parte fracțională (număr de persoane, mașini etc., numere și contoare).

Tastați real corespunde formei de reprezentare a numerelor punctul de plutire, care se caracterizează printr-o reprezentare aproximativă a unui număr cu un număr dat de cifre semnificative (semne mantise) și o gamă largă de ordinul numărului, ceea ce face posibilă reprezentarea atât a numerelor foarte mari, cât și a celor foarte mici în valoare absolută. Datorită reprezentării aproximative a datelor de tip real, acestea este incorect a compara pentru egalitate.

În implementările moderne ale limbajelor de programare universale, există de obicei mai multe tipuri întregi și mai multe tipuri reale, fiecare dintre acestea fiind caracterizat de dimensiunea memoriei alocate pentru o valoare și, în consecință, gama sa de valori numerice și pentru tipurile reale - și precizia sa. (numărul de cifre ale mantisei).

Date tip de caracter ia valori pe întregul set de acceptabile a acestui calculator personaje. Un octet este alocat pentru a stoca valoarea unui caracter; caracterele sunt codificate în conformitate cu un tabel de codificare standard (de obicei ASCII).

Există 4 tipuri de bază în C:

char- tipul caracterului;

int- un tip întreg,

pluti- tip real de o singură precizie,

dubla- tip real de dublă precizie.

Pentru a defini tipurile derivate, utilizați calificative:mic de statura(scurt) - folosit cu tip int,lung(lung) - folosit cu tipuri intȘi dubla;semnat(cu semn), nesemnat(nesemnat) - aplicabil oricărui tip întreg. În lipsa cuvântului nesemnat, valoarea este considerată semnată, adică. adică implicit este semnat. Datorită admisibilității unei combinații arbitrare de calificative și nume de tipuri de bază, un tip poate avea mai multe denumiri. Informațiile despre tipurile C standard sunt prezentate în Tabelele 1 și 2. Descriptorii de sinonime sunt listați în celulele primei coloane, separați prin virgule.

Tabelul 1. Tipuri de date standard C întregi

Tip de date

Gama de valori

char, semnat char

unsigned int, nesemnat

int, semnat int, scurt int, scurt

2147483648...2147483647

Interesant este că în C, tipul char poate fi folosit ca caracter sau ca tip întreg, în funcție de context.

Tabelul 2. Tipuri de date reale standard C

Cometariu. Pentru a scrie programe pentru prima parte a manualului, vom avea nevoie în principal doua tipuri:plutiȘiint.

Tipurile de date din C sunt o clasă de date ale căror valori au caracteristici similare. Tipul definește reprezentare internă date din memorie. Cele mai de bază tipuri de date: logice, întregi, numere în virgulă mobilă, șiruri de caractere, pointeri.

Cu tastarea dinamică, o variabilă este asociată cu un tip în momentul inițializării. Se pare că o variabilă din diferite părți ale codului poate avea tipuri diferite. Tastarea dinamică este acceptată de Java Script, Python, Ruby, PHP.

Tastarea statică este opusul tastării dinamice. Când este declarată, o variabilă primește un tip care nu se schimbă ulterior. Limbajele C și C++ sunt doar atât. Această metodă este cea mai convenabilă pentru scris cod complex, iar în etapa de compilare sunt eliminate multe erori.

Limbile sunt împărțite în mod informal în puternic tastate și slab tastate. Tastarea puternică înseamnă că compilatorul va arunca o eroare dacă tipurile așteptate și reale nu se potrivesc.

x = 1 + „2”; //eroare - nu puteți adăuga un simbol la un număr

Un exemplu de tastare slabă.

Verificarea coerenței tipului este efectuată de sistemul de siguranță a tipului. O eroare de tastare apare, de exemplu, atunci când încercați să utilizați un număr ca funcție. Există limbi netipizate. Spre deosebire de cele tastate, acestea vă permit să efectuați orice operație asupra fiecărui obiect.

Cursuri de memorie

Variabilele, indiferent de tipul lor, au propriul domeniu de aplicare și durata de viață.

Cursuri de memorie:

  • auto;
  • static;
  • extern;
  • Inregistreaza-te.

Toate variabilele din limbajul C sunt implicite locale. Ele pot fi utilizate numai într-o funcție sau bloc. Când funcția se termină, valoarea lor este distrusă.

O variabilă statică este de asemenea locală, dar poate avea o valoare diferită în afara blocului său, iar valoarea este reținută între apelurile de funcție.

Variabila externă este globală. Este disponibil în orice parte a codului și chiar într-un alt fișier.

Specificatorii tipului de date în C pot să nu fie specificați în următoarele cazuri:

  1. Toate variabilele din interiorul blocului nu sunt variabile, prin urmare, dacă această clasă de memorie particulară este destinată să fie utilizată, atunci specificatorul automat nu este specificat.
  2. Toate funcțiile declarate în afara unui bloc sau funcție sunt globale în mod implicit, deci nu este necesar specificatorul extern.

A indica tipuri simple specificatorii int, char, float sau double sunt specificati. Modificatorii nesemnat, semnat, scurt, lung, lung lung pot fi înlocuiți cu variabile.

În mod implicit, toate numerele sunt semnate, prin urmare, pot fi doar în intervalul de numere pozitive. Pentru a defini o variabilă de tip char ca semnată, scrieți signed char. Long, long long și short indică cât spațiu de memorie este alocat pentru stocare. Cel mai mare este lung lung, cel mai mic este scurt.

Char este cel mai mic tip de date din C. Numai 1 octet de memorie este alocat pentru stocarea valorilor. O variabilă de tip caracter i se atribuie de obicei caractere, iar mai rar - numere. Valorile caracterelor sunt cuprinse între ghilimele.

Tipul int stochează numere întregi; dimensiunea sa este nedefinită - este nevoie de până la 4 octeți de memorie, în funcție de arhitectura computerului.

O conversie explicită a unei variabile fără semn este specificată după cum urmează:

Implicitul arată astfel:

Float și dublu definiți numerele cu un punct. Numerele flotante sunt reprezentate ca -2,3 sau 3,34. Double este folosit pentru o mai mare precizie - după separatorul părților întregi și fracționale, indicați mai multe numere. Acest tip ocupă mai mult spațiu de memorie decât float.

Vidul are valoare goală. Definește funcții care nu returnează nimic. Acest specificator specifică o valoare goală în argumentele metodei. Pointerii, care pot accepta orice tip de date, sunt, de asemenea, definiți ca nuli.

tip boolean Bool

Folosit în teste de stare și bucle. Are doar două semnificații:

  • Adevărat;
  • minciună.

Valorile booleene pot fi convertite într-o valoare int. Adevărat este echivalent cu unu, fals este echivalent cu zero. Conversia tipului este posibilă numai între bool și int, altfel compilatorul va arunca o eroare.

if (x) ( //Eroare: „Nu se poate converti implicit tipul „int” în „bool””

if (x != 0) // Modul C#

Șiruri și matrice

Matricele sunt tipuri complexe de date în C. PL nu funcționează cu șiruri în același mod ca și Javascript sau Ruby. În C, toate șirurile sunt matrice de elemente cu o valoare de caracter. Liniile se termină cu un octet nul „