logo

Kaj je short int v C?

V programskem jeziku C, kratka notr je podatkovni tip, ki se uporablja za shranjevanje celih vrednosti. Je modifikator vrste, ki ga je mogoče uporabiti z int podatkovni tip za ustvarjanje manjše celoštevilske spremenljivke, ki porabi manj pomnilnika kot običajno int.

The kratka notr vrsta podatkov zaseda 2 bajta pomnilnika, ki je za polovico manjši od običajnega int podatkovni tip , in lahko predstavlja celoštevilske vrednosti v obsegu -32.768 do 32.767 .

Sintaksa kratkih int

strojno učenje in vrste

Sintaksa za deklaracijo spremenljivke short int je naslednja:

 short int variable_name; 

Naslednja koda na primer deklarira in inicializira a kratka notr spremenljivka z imenom starost:

 short int age = 25; 

Spremenljivke short int lahko povzročijo napake, če jih ne uporabljate previdno. To je zato, ker imajo manjši razpon vrednosti kot int spremenljivke in se lahko prelijejo, če jim je dodeljena vrednost izven njihovega obsega. Zaradi tega je pomembno zagotoviti, da so vrednosti, dodeljene spremenljivki short int, znotraj njenega obsega.

Poleg tega lahko namesto ključne besede uporabite kratko ključno besedo kratka notr za deklaracijo spremenljivke te vrste. Zato sta naslednji izjavi enakovredni:

 short int variable_name; short variable_name; 

Nekatere druge dodatne podrobnosti o podatkovni tip 'short int' so naslednji:

    Velikost in razpon vrednosti

Kot smo že omenili, short int zaseda 2 bajta pomnilnika, ki je polovica velikosti navadnega podatkovnega tipa int. Velikost kratkega inta je definirana z implementacijo, kar pomeni, da se lahko razlikuje glede na uporabljeno platformo in prevajalnik. Vendar pa je vedno zajamčeno, da je manjši od običajnega int.

Kar zadeva obseg vrednosti, lahko kratki int shrani celoštevilske vrednosti v obsegu -32.768 do 32.767 . Ta obseg je mogoče določiti z uporabo SHRT_MIN in SHRT_MAX konstante, ki so definirane v meje.h naslovna datoteka.

    Uporaba 'short int'

Podatkovni tip short int se običajno uporablja, ko je prostor v pomnilniku zaskrbljujoč ali ko je obseg vrednosti, shranjenih v spremenljivki, znotraj obsega short int. Nekateri primeri situacij, kjer se lahko uporabi kratki int, vključujejo:

  • V vgrajenih sistemih, kjer je pomnilnik omejen.
  • Pri ustvarjanju velikih nizov celih števil, kjer je treba optimizirati uporabo pomnilnika.
  • Ko je znano, da je obseg vrednosti, shranjenih v spremenljivki, znotraj obsega a kratka notr , kot je shranjevanje starosti osebe, ki običajno ne presega 100 let .
  • Modifikatorji vrste

The podatkovni tip short int je modifikator tipa, kar pomeni, da ga je mogoče uporabiti v kombinaciji z drugimi tipi podatkov za ustvarjanje novih tipov podatkov. Na primer, naslednje so veljavne deklaracije spremenljivk:

 short int x; short y; short int *ptr; short int arr[10]; 
    Implicitne konverzije

Pri izvajanju aritmetičnih ali primerjalnih operacij med spremenljivkami različnih tipov podatkov lahko C izvede implicitne pretvorbe, da zagotovi pravilno izvedbo operacij. Pri uporabi spremenljivk short int je pomembno, da se zavedate teh pretvorb, saj lahko povzročijo nepričakovano vedenje. Na primer, razmislite o naslednji kodi:

 #include int main() { short int x = 300; short int y = 200; short int z = x + y; printf('%d
', z); return 0; } 

Izhod:

 500 

Pojasnilo:

V tej kodi je z i s dodeljena vrednost 500 , kar je pravilen rezultat seštevanja x in in . Vendar, če je printf izjava se spremeni v printf('%hu ', z), rezultat bo 244 , ki je rezultat pretvorbe 500 nepodpisanemu kratka notr . To se zgodi, ker %hu uporabljen je specifikator formata, ki nakazuje, da mora biti vrednost, ki se natisne, nepredznačeno kratko int.

    Napredovanje in degradacija

Pri izvajanju operacij med spremenljivkami različnih tipov podatkov lahko C izvaja napredovanja in znižanja, da zagotovi, da se operacije izvajajo pravilno. Do napredovanja pride, ko je spremenljivka manjšega podatkovnega tipa implicitno pretvorjena v spremenljivko večjega podatkovnega tipa, medtem ko se degradacija pojavi, ko je spremenljivka večjega podatkovnega tipa implicitno pretvorjena v spremenljivko manjšega podatkovnega tipa. Pri uporabi kratkih spremenljivk int je pomembno, da se zavedate teh napredovanj in znižanj, saj lahko vplivajo na rezultate aritmetičnih in primerjalnih operacij.

    Privzeta inicializacija

Če spremenljivka short int je deklariran, ne da bi bil inicializiran, njegova vrednost je nedefinirana. Z drugimi besedami, lahko vsebuje katero koli vrednost, vključno z negativno vrednostjo ali vrednostjo zunaj obsega kratka notr . Zato je dobra praksa, da spremenljivke vedno inicializirate na znano vrednost, ko so deklarirane.

modem proti usmerjevalniku
    Kasting

Kasting je postopek pretvorbe spremenljivke iz enega podatkovnega tipa v drugega. Pri pretvorbi spremenljivke v a kratka notr , je vrednost spremenljivke okrnjena, da se prilega območju od kratka notr . Na primer, razmislite o naslednji kodi:

 int x = 500; short int y = (short int) x; 

V tej kodi je vrednost x je 500 , ki je izven območja kratkih int. Vendar, ko x je oddan v a kratko int, vrednost je okrnjena, da se prilega območju kratka notr , kaže v in ki mu je dodeljena vrednost -12 . Zato je pri pretvorbi spremenljivk pomembno zagotoviti, da je dobljena vrednost znotraj obsega podatkovnega tipa, ki se preliva.

    Podpisanost

Privzeto, kratka notr je podpisan podatkovni tip , kar pomeni, da lahko predstavlja pozitivne in negativne vrednosti. Možna pa je tudi prijava kratka notr kot nepodpisani podatkovni tip z uporabo nepredznačeno kratko notr oz nepodpisana kratka ključna beseda . Nepredznačeno kratko int lahko predstavlja le nenegativne vrednosti, vendar se njegov obseg podvoji na 0 do 65.535 .

c polje nizov
    Kompatibilnost

Od kratka notr je manjši podatkovni tip od int , se lahko implicitno poviša v int, ko se uporablja v aritmetika ali primerjalne operacije z int. Pomeni, da a kratka notr se lahko uporablja kjer koli int je pričakovan, brez potrebe po izrecni zasedbi.

    Prenosljivost

Velikost kratka notr se lahko razlikujejo glede na uporabljeno platformo in prevajalnik. Da bi zagotovili prenosljivost kode na različne platforme, priporočamo uporabo datoteka glave stdint.h , ki definira tipe celih števil s fiksno velikostjo s specifičnimi širinami in predznakom. Na primer, vrsta int16_t je 16-bitno predznačeno celo število , kar je enakovredno kratka notr na večini platform.

    Indeksiranje matrike

Ko deklarirate niz kratke int vrednosti , se do vsakega elementa matrike dostopa z uporabo indeksa. Indeks je lahko celoštevilski literal ali spremenljivka tipa int. Če pa je indeks spremenljivka tipa kratka notr , bo samodejno povišan v an int preden se uporabi za dostop do polja. Na primer:

 short int arr[10]; short int i = 5; short int val = arr[i]; // i is promoted to int before being used as an index 
    Bitna manipulacija

kratka notr se lahko uporablja za operacije bitne manipulacije, kot je npr prestavljanje in maskiranje . Pri prestavljanju a kratka notr vrednost, je rezultat kratka int vrednost. Vendar pa pri uporabi bitnih operatorjev, kot je & in |, kratke vrednosti int so najprej povišane v int, preden se izvede operacija.

    Izvedba

V nekaterih primerih lahko uporaba kratkega int namesto int izboljša zmogljivost, zlasti na platformah z omejenim pomnilnikom ali procesorsko močjo. Vendar je odvisno od posebne aplikacije in strojne opreme, ki se uporablja, zato ga je treba preizkusiti za vsak primer posebej.

    Inicializacija z uporabo pripone

Jezik C ponuja pripono za inicializacijo spremenljivk s kratkim tipom int. Pripona 's' oz 'S' se lahko uporablja s konstantno vrednostjo za eksplicitno podajanje konstante short int. Na primer:

 Short int x=10s;