De fapt, char - nu celălalt, ca un tip de date întregi de cea mai scurtă dimensiune (intervalul de la 0 la 255 sau -128 +127; aceste opțiuni, la fel ca în cazul int, pot fi specificate cu calificative de tip: char nesemnate și semnat char). Cu toate acestea, în practică, acest tip sunt de obicei utilizate pentru a reprezenta date de caractere - litere, cifre, semne de punctuație, simboluri matematice, caractere speciale, cum ar fi $, , @, Și așa mai departe. D.
Setul de toate caracterele posibile formează alfabetul. Alfabetul - un set ordonat de caractere, și anume pentru fiecare caracter (cu excepția, poate, prima și ultima) este cunoscut care caracterul este precedat și ceea ce urmează. Comandarea același caracter stabilit în moduri diferite, vom obține o alfabete diferite. Mai ales alfabete diferite sunt compuse din diferite seturi de caractere.
Dacă dat alfabet (adică, un set de n caractere și metoda lor de ordonare), simbolurile pot fi numerotate în ordine de la 0 la n -1. Apoi, pentru fiecare simbol alfabet poate fi referit prin specificarea numărul său de serie. Acesta este modul în care datele caracter este reprezentat într-un computer - în loc de numerele lor de serie din alfabetul (numite coduri de caractere) sunt caractere stocate ei înșiși. Codurile depind de modul particular de caractere prin care se dispune, sau codificarea lor. Dacă este posibil codificări, atunci interpretarea corectă a datelor de tip caracter este necesar să se cunoască exact ce codificare le corespund.
Valorile numerice, care pot conține o parte fracționată, într-un calculator sunt reprezentate ca numere în virgulă mobilă. Acest număr este stocat sub forma a două componente - mantisa și ordine. care corespunde înregistrării:
Acolo m - mantisa, p - ordine, Q - Radix. Ordinea este întotdeauna un număr întreg (pozitiv sau negativ). Mantisă - o parte semnificativă a numărului, poate fi fracțiune corectă sau mixtă. Numerele de mașini sunt reprezentate în notație binară, astfel încât acestea Q = 2.
Deoarece cantitatea totală de memorie alocată pentru stocarea unui singur număr este fix, valoarea numărului poate fi reprezentat doar cu precizie limitată. Valoarea reală a acestui număr este rotunjit la figuri, care ar putea descrie o dimensiune dată a mantisei. Prin urmare, numerele în virgulă mobilă, în cele mai multe cazuri cuprind o anumită eroare, numită rotunjire eroare.
Valorile stabilite pentru tipul de virgulă flotantă se caracterizează printr-un interval (în funcție de intervalul de valori posibile ale ordinului) și precizia (în funcție de mărimea mantisei).
Cele mai multe procesoare sunt capabile să lucreze cu cel puțin două specii (sau formate) plutitoare numere de puncte, care variază în dimensiune, și, prin urmare, asupra gamei și precizie. Prin urmare, cele două tipuri de bază sunt prevăzute la punctul C floating:
float - o singură precizie în virgulă mobilă (patru octeți)
dublu - numărul punctului plutitor dublu-precizie (8 octeți)
Menționate aici sunt tipice dimensiuni, dar ele nu vor fi în mod necesar un astfel în orice computer. Caracteristicile acestor tipuri de procesoare x86:
float - 4 bytes, 1.175 × 10 - 38 £ | x | £ 3.403 × 10 38. | Dx / x | £ 1,192 x 10-7
dublu - 8 octeți, 2,225 x 10 - 308 £ | x | £ 1,797 × 10 308. | Dx / x | £ 2.220 × 10-16
În cazul în care programul va avea nevoie de valori specifice și limitele domeniului de precizie relativă a valorilor de tip float și double, este mai bine să nu utilizeze valorile de mai sus (care sunt valabile pentru procesoare x86), și constantele simbolice standard definite în float.h fișierul antet prin #define:
FLT_MIN, FLT_MAX, FLT_EPSILON - pentru un plutitor
DBL_MIN, DBL_MAX, DBL_EPSILON - pentru tipul dublu
Apoi, textul programului nu este „legat“ la doar o varietate de procesoare.
Deoarece unele procesoare sunt capabile de a lucra cu mai mult de două formate de numere în virgulă mobilă (de exemplu, este „extins“ sau „de patru ori“ de precizie), în standardul C permite utilizarea kvalichikatora lungi nu numai cu tipul int, dar cu dublu. Va tipul de dublu lung au de fapt o gamă mai largă și precizie în comparație cu dublu, în funcție de capacitățile procesorului, precum și decizia luată de către dezvoltatorii compilator. Astfel, în multe compilatoare moderne [2] pentru lungi procesoare de familie duble Intel x86 este diferit de dublu, cu toate că procesorul este capabil de a lucra cu un număr de precizie extins de 10 octeți (80 de biți). Pentru limitele intervalului și precizia numărului de tip reprezentare float.h dublu lung în fișierul antet definit constante LDBL_MIN standardul, LDBL_MAX și LDBL_EPSILON.
[1] În literatura rus aspect numit, de asemenea, de asamblare sau de legare. termenul „link-urile de editare“, este, de asemenea, găsite.
[2] Excepția este fermă compilatoare Borland.