Tipuri de date în C

Există mai multe moduri diferite de a stoca date în C și toate sunt unice una față de alta. Tipurile de date în care informațiile pot fi stocate sunt denumite tipuri de date. C este mult mai puțin iertător cu privire la tipurile de date decât alte limbi. Prin urmare, este important să vă asigurați că înțelegeți tipurile de date existente, abilitățile și limitările acestora.

O ciudățenie a tipurilor de date ale lui C este că acestea depind în totalitate de hardware-ul pe care rulați codul. Un int pe laptopul dvs. va fi mai mic decât un int pe un supercomputer, deci cunoașterea limitelor hardware-ului la care lucrați este importantă. Acesta este și motivul pentru care tipurile de date sunt definite ca fiind minime int valoarea, după cum veți învăța, este de minimum -32767 până la 32767: pe anumite mașini, va putea stoca și mai multe valori decât aceasta.

Există două categorii în care putem împărți acest lucru: numere întregi și numere în virgulă mobilă. Numerele întregi sunt numere întregi. Ele pot fi pozitive, negative sau zero. Numere precum -321, 497, 19345 și -976812 sunt toate numere întregi perfect valabile, dar 4.5 nu este pentru că 4.5 nu este un număr întreg.

Numerele cu virgulă mobilă sunt numere cu o zecimală. La fel ca numerele întregi, -321, 497, 19345 și -976812 sunt valabile, dar acum sunt valabile și 4.5, 0.0004, -324.984 și alte numere care nu sunt întregi.

C ne permite să alegem între mai multe opțiuni diferite cu tipurile noastre de date, deoarece toate sunt stocate în moduri diferite pe computer. Prin urmare, este important să fiți conștienți de abilitățile și limitările fiecărui tip de date pentru a alege cel mai potrivit.

Tipuri de date întregi

Personaje: char

char conține caractere – lucruri precum litere, punctuație și spații. Pe un computer, caracterele sunt stocate ca numere, deci char deține valori întregi care reprezintă caractere. Traducerea reală este descrisă de standardul ASCII. Iată o masă la îndemână pentru a căuta în sus că.

Dimensiunea reală, ca toate celelalte tipuri de date din C, depinde de hardware-ul la care lucrați. Cel puțin, este de cel puțin 8 biți, deci veți avea cel puțin 0 până la 127. Alternativ, puteți utiliza signed char pentru a obține cel puțin -128 până la 127.

Numere întregi standard: int

Cantitatea de memorie pe care o are un singur int ia depinde de hardware. Cu toate acestea, vă puteți aștepta la o int să aibă dimensiunea de cel puțin 16 biți. Acest lucru înseamnă că poate stoca valori de la -32.768 la 32.767 sau mai multe, în funcție de hardware.

La fel ca toate aceste alte tipuri de date, există un unsigned variantă care poate fi utilizată. unsigned int poate fi pozitiv și zero, dar nu negativ, deci poate stoca valori de la 0 la 65.535 sau mai multe, în funcție de hardware.

Numere întregi scurte: short

Acest lucru nu se obișnuiește des, dar este bine să știm că există. La fel ca int, poate stoca -32768 până la 32767. Spre deosebire de int, totuși, aceasta este amploarea capacității sale. Oriunde puteți folosi short, poți să folosești int.

Numere întregi mai lungi: long

long tipul de date stochează numere întregi precum int, dar oferă o gamă mai largă de valori cu prețul de a lua mai multă memorie. Stochează lungi de cel puțin 32 de biți, oferindu-i o gamă cuprinsă între -2.147.483.648 și 2.147.483.647. Alternativ, utilizați unsigned long pentru un interval de la 0 la 4.294.967.295.

Numere întregi chiar mai lungi: long long

long long tipul de date este excesiv pentru aproape fiecare aplicație, dar C vă va permite să îl utilizați oricum. Este capabil să stocheze cel puțin −9.223.372.036.854.775.807 până la 9.223.372.036.854.775.807. Alternativ, obțineți și mai mult exces cu unsigned long long, ceea ce vă va oferi cel puțin 0 până la 18.446.744.073.709.551.615.

Tipuri de date cu număr în virgulă mobilă

Numere de bază în virgulă mobilă: float

float are nevoie de cel puțin 32 de biți pentru stocare, dar ne oferă 6 zecimale de la 1.2E-38 la 3.4E + 38.

Duble: double

double are o memorie dublă de float (deci cel puțin 64 de biți). În schimb, dubla poate oferi 15 zecimale de la 2.3E-308 la 1.7E + 308.

Obținerea unei game mai largi de duble: long double

long double durează cel puțin 80 de biți. Ca rezultat, putem obține 19 zecimale de la 3.4E-4932 la 1.1E + 4932.

Alegerea tipului de date potrivit

C face să alegem tipul de date și ne face să fim foarte specifici și intenționați cu privire la modul în care facem acest lucru. Acest lucru vă oferă multă putere asupra codului dvs., dar este important să îl alegeți pe cel potrivit.

În general, ar trebui să alegeți minimul pentru sarcina dvs. Dacă știți că veți număra de la numărul întreg 1 la 10, nu aveți nevoie de o lungă perioadă și nu aveți nevoie de o dublă. Dacă știți că nu veți avea niciodată valori negative, căutați să utilizați unsigned variante ale tipurilor de date. Oferind mai degrabă această funcționalitate decât făcând-o automat, C este capabil să producă un cod foarte ușor și eficient. Cu toate acestea, depinde de dvs. ca programator să înțelegeți abilitățile și limitările și să alegeți în consecință.

Putem folosi operatorul sizeof () pentru a verifica dimensiunea unei variabile. Consultați următorul program C pentru utilizarea diferitelor tipuri de date:

#include <stdio.h>

int main()
{
    int a = 1;
    
    char b ='G';
    
    double c = 3.14;
    
    printf("Hello World!n");
 
    //printing the variables defined above along with their sizes
    printf("Hello! I am a character. My value is %c and "
           "my size is %lu byte.n", b,sizeof(char));
    //can use sizeof(b) above as well
 
    printf("Hello! I am an integer. My value is %d and "
           "my size is %lu  bytes.n", a,sizeof(int));
    //can use sizeof(a) above as well
 
    printf("Hello! I am a double floating point variable."
           " My value is %lf and my size is %lu bytes.n",c,sizeof(double));
    //can use sizeof(c) above as well
 
    printf("Bye! See you soon. :)n");
    return 0;
}

Ieșire:

Hello World!Hello! I am a character. 
My value is G and my size is 1 byte.
Hello! I am an integer. 
My value is 1 and my size is 4 bytes.
Hello! I am a double floating point variable. 
My value is 3.140000 and my size is 8 bytes.
Bye! See you soon. :)

Tipul Vidului

Tipul de gol specifică faptul că nu este disponibilă nicio valoare. Este utilizat în trei tipuri de situații:

1. Funcția revine ca nulă

Există diverse funcții în C care nu returnează nicio valoare sau puteți spune că returnează nulitate. O funcție fără valoare returnată are tipul returnat ca fiind nul. De exemplu, void exit (int status);

2. Argumentele funcției sunt nule

Există diferite funcții în C care nu acceptă niciun parametru. O funcție fără parametru poate accepta un gol. De exemplu, int rand(void);

3. Indicații către gol

Un indicator de tip void * reprezintă adresa unui obiect, dar nu tipul acestuia. De exemplu, o funcție de alocare a memoriei void *malloc( size_t size); returnează un pointer la gol care poate fi aruncat la orice tip de date.