C programavimas

Operatoriaus dydis C kalba

Operatoriaus dydis C kalba
Šiame straipsnyje mes sužinosime apie operatoriaus dydį C. Tai yra plačiai naudojamas vienkartinis įterptosios programinės įrangos operatorius, kuris padeda mums sužinoti operando dydį. Todėl operatoriaus sizeof grąžinimo vertė padeda suprasti baitų skaičių, paskirstytą kompiuterio atmintyje tam tikram kintamajam ar duomenų tipui laikyti.

Suprasti dydį:

Prieš pasinerdami į operatoriaus diskusijos dydį, pirmiausia supraskime operatoriaus prasmę. Operatorių žymi žetonas arba simbolis, kuris naudojamas tokiai operacijai atlikti kaip susiejimas, atimimas, dauginimas, dalijimas ir kt. pagal reikšmes ar kintamuosius (operandai). Pvz., „*“ Yra simbolis, naudojamas dauginimo operacijai vaizduoti, ir jis veikia dviem operandais (rezultatas = a * b;). Tai yra dvejetainio operatoriaus pavyzdys.

Tačiau jei operatorius dirba tik su vienu operandu, tokį operatorių vadiname unariniu operatoriumi. Operatoriaus dydis yra vienas iš vienarūšių operatorių, egzistuojančių C programavimo kalba, ir, matyt, jis veikia tik vienu operandu. Operatoriaus dydis pateikia operando dydį. Tai reiškia, kad iš operatoriaus „Sizeof“ grąžinimo vertės galime aiškiai pasakyti, kiek baitų skirta tam tikram operandui laikyti kompiuterio atmintyje.

Kompiuterio atmintis yra atminties vienetų rinkinys (t.e. baitas). Kai dydisof (int) grąžina keturis konkrečioje kompiuterio sistemoje, galime sakyti, kad sveikasis skaičius kintantis reikalauja 4 baitų, kad išlaikytų savo vertę tos konkrečios kompiuterio sistemos atmintyje. Taip pat atkreipkite dėmesį, kad operatoriaus size grąžinimo vertė taip pat priklauso nuo jūsų naudojamų mašinų (32 bitų arba 64 bitų sistema).

Sintaksė:

Dydis (tipas)
Dydis (išraiška)

Grįžimo tipas sizeof yra size_t.

Pavyzdžiai:

Kadangi suprantame operatoriaus dydį ir žinome sintaksę, pažvelkime į keletą pavyzdžių, kurie padės mums geriau suprasti sąvoką.

Įmontuotų tipų dydis (1 pavyzdys).c):

Šioje programoje pamatysime, kaip operatorius veikia įmontuotiems duomenų tipams, pvz., Int, char, float, double. Pažvelkime į programą ir išvestį.

# įtraukti
int main ()

printf ("char dydis =% ld \ n", sizeof (char) dydis);
printf ("dydis int =% ld \ n", sizeof (int));
printf ("Plūdės dydis =% ld \ n", dydis (plūdė));
printf ("Dvigubo dydis =% ld \ n \ n", dydisof (dvigubas));
printf ("Trumpo int dydis =% ld \ n", dydisof (trumpas int) dydis);
printf ("ilgio int dydis =% ld \ n", dydisof (ilgas int) dydis);
printf ("Ilgo ilgio int dydis =% ld \ n", dydisof (ilgo ilgo int ilgis));
printf ("Ilgio dvigubo dydis =% ld \ n", dydisof (ilgas dvigubas));
grąžinti 0;

Masyvo dydis (pavyzdys2.c)

Šioje programoje pamatysime, kaip naudoti operatorių sizeof skirtingiems masyvo tipams. Masyvo atveju grąžinamas operatoriaus dydis (Nr. masyvo elementų * Sizeof (masyvo tipas)). Pvz., Kai mes paskelbsime sveiko skaičiaus tipo 10 elementų masyvą („SmartPhones“ [10];), bus grąžintas „sizeof“ („Smartphones“) dydis:

(Ne. iš „SmartPhones“ elementų * sizeof (int)) = (10 * 4) = 40

Pažvelkime į programą ir išvestį.

# įtraukti
int main ()

int išmanieji telefonai [10];
char SmartPhoneNames [10];
dviguba „SmartPhonesPrice“ [10];
printf ("dydis int =% ld \ n", sizeof (int));
printf ("char dydis =% ld \ n", sizeof (char) dydis);
printf ("Dvigubo dydis =% ld \ n", dydisof (dvigubas));
/ * Sužinokite masyvo dydį * /
printf ("Išmaniųjų telefonų dydis [10] =% ld \ n", dydis iš (Išmaniųjų telefonų));
printf ("SmartPhoneNames dydis [10] =% ld \ n", sizeof (SmartPhoneNames) dydis);
printf ("SmartPhonesPrice dydis [10] =% ld \ n", sizeof (SmartPhonesPrice));
grąžinti 0;

Vartotojo nustatytų tipų dydis (3 pavyzdys).c):

Šiame pavyzdyje pamatysime, kaip naudoti operatoriaus sizeof vartotojo nustatytais duomenų tipais, tokiais kaip struktūra ir sąjunga. Panaudokime programą ir supraskime išvestį.

Dabar, žiūrėdami į programą, mes galime rankiniu būdu apskaičiuoti „SmartPhoneType“ dydį. Kaip matote žemiau, „SmartPhoneType“ yra struktūra ir joje yra šie elementai:

  • Simbolio tipo kintamojo skaičius = 1 [sp_name]
  • Sveiko skaičiaus tipo kintamojo skaičius = 1 [sp_version]
  • Plūduriuojančio tipo kintamųjų skaičius = 3 [sp_length, sp_width, sp_height]

Iš 1 pavyzdžio matėme, kad:

    • Simbolio dydis yra 1 baitas
    • Sveiko skaičiaus dydis yra 4 baitai
    • Plūdės dydis yra 4 baitai

Taigi, jei susumuosime visų struktūros elementų dydį, turėtume sugebėti gauti struktūros dydį, t.e. „SmartPhoneType“. Todėl struktūros dydis turėtų būti = (1 + 4 + 4 + 4 + 4) baitai = 17 baitų. Tačiau programos išvestyje sakoma, kad struktūros dydis yra 20. Papildomi 3 baitai (sp_name, kuris yra simbolis, užima 4, o ne 1 baitą), skirti struktūrai dėl struktūros užpildymo.

# įtraukti
/ * Sukurkite vartotojo apibrėžtą struktūros tipą - „SmartPhoneType“ * /
Struktūrinis „SmartPhoneType“

char sp_name;
int sp_version;
plūdės sp_length;
plūduriuojantis sp_width;
plūdės sp_height;
Išmanusis telefonas;
/ * Apibrėžkite vartotojo nustatytą sąjungos tipą - „SmartPhoneUnionType“ * /
„Union SmartPhoneUnionType“

char sp_name;
int sp_version;
plūdės sp_length;
plūduriuojantis sp_width;
plūdės sp_height;
„SmartPhone_u“;
int main ()

/ * Sužinokite struktūros dydį ir sąjungą * /
printf ("Struktūros dydis =% ld \ n", sizeof ("SmartPhone") dydis);
printf ("Unijos dydis =% ld \ n", sizeof (SmartPhone_u));
grąžinti 0;

Kintamųjų dydis (pavyzdys4.c):

Šis programos pavyzdys rodo, kad operatorius sizeof taip pat gali priimti kintamąjį ir grąžinti kintamojo dydį.

# įtraukti
int main ()

Deklaruoti char, int, float ir dvigubo tipo kintamuosius ir masyvą * /
char var_a, var_b [20];
int var_c, var_d [20];
plūdė var_e, var_f [20];
dvigubas var_g, var_h [20];
/ * Sužinokite kintamųjų ir masyvo dydį.
Ši programa parodo, kad kintamasis taip pat gali
naudoti kaip operatoriaus operando dydį * /
/ * char, char kintamojo ir char masyvo dydis * /
printf ("char dydis =% ld \ n", sizeof (char) dydis);
printf ("Var_a dydis =% ld \ n", sizeof (var_a) dydis);
printf ("Var_b [20] =% ld \ n \ n" dydis, sizeof (var_b) dydis);
/ * int, int kintamojo ir int masyvo dydis * /
printf ("dydis int =% ld \ n", sizeof (int));
printf ("Var_c dydis =% ld \ n", sizeof (var_c) dydis);
printf ("Var_d [20] =% ld \ n \ n dydis, sizeof (var_d) dydis");
/ * plūdės, plūduriuojančio kintamojo ir plūduriuojančio masyvo dydis * /
printf ("Plūdės dydis =% ld \ n", dydis (plūdė));
printf ("Var_e dydis =% ld \ n", sizeof (var_e) dydis);
printf ("Var_f [20] =% ld \ n \ n dydis, sizeof (var_f) dydis");
/ * dvigubo, dvigubo kintamo ir dvigubo masyvo dydis * /
printf ("Dvigubo dydis =% ld \ n", dydisof (dvigubas));
printf ("Var_g dydis =% ld \ n", sizeof (var_g) dydis);
printf ("var_h [20] =% ld \ n" dydis, sizeof (var_h) dydis);
grąžinti 0;

Išraiškos dydis (5 pavyzdys.c):

Šiame programos pavyzdyje mes parodysime, kad operatorius sizeof taip pat gali priimti išraišką ir grąžinti gautos išraiškos dydį.

# įtraukti
int main ()

int var_a = 5, var_b = 3;
dvigubas var_c = 2.5, var_d = 4.5;
printf ("dydis int =% ld \ n", sizeof (int));
printf ("Double of size =% ld \ n \ n", sizeof (double) dydis);
printf ("var_a * var_b =% ld \ n dydis", sizeof (var_a * var_b));
printf ("Var_c * var_d =% ld \ n" dydis, sizeof (var_c * var_d));
/ * Čia dauginame sveikojo skaičiaus kintamąjį su dvigubu kintamuoju.
Todėl operatoriaus dydis pateiks maksimalaus dydžio dydį
kintamasis i.e. dvigubo tipo kintamasis.* /
printf ("var_a * var_c =% ld \ n dydis", sizeof (var_a * var_c));
grąžinti 0;

Praktinis dydisof naudojimas (6 pavyzdys).c):

Šis programos pavyzdys padės suprasti praktinį operatoriaus sizeof atvejį. Operatorius „Sizeof“ yra labai naudingas paskirstant dinaminę atmintį iš kaupo naudojant malloc. Pažvelkime į programą ir išvestį.

# įtraukti
# įtraukti
typedef struct

char sp_name;
int sp_version;
plūdės sp_length;
plūduriuojantis sp_width;
plūdės sp_height;
SmartPhoneType;
int main ()

/ * Paskirstykite atmintį į kaupo atmintį, kad galėtumėte laikyti penkis „SmartPhoneType“
kintamieji.
* /
SmartPhoneType * SmartPhone_Ptr = (SmartPhoneType *) malloc (5 * sizeof (SmartPhoneType));
jei („SmartPhone_Ptr != NULL)

"Atmintis skirta 5" SmartPhoneType "struktūros kintamiesiems
Krūvos atmintis.\ n ");

Kitas

printf ("Paskirstant kaupo atmintį įvyko klaida!");

grąžinti 0;

Išvada:

„Sizeof“ yra svarbus vienarūšis operatorius C programavimo kalboje. Tai padeda mums nustatyti primityvių duomenų tipų dydį, vartotojo apibrėžtus duomenų tipus, išraiškas ir kt. kompiuterio atmintyje. Operatorius Sizeof vaidina svarbų vaidmenį paskirstant dinaminę atmintį C naudojant malloc, calloc ir kt. Krūvos atmintyje.

Kaip pakeisti kairįjį ir dešinįjį pelės mygtukus „Windows 10“ kompiuteryje
Gana įprasta, kad visi kompiuterio pelės įrenginiai yra ergonomiškai sukurti dešiniarankiams. Tačiau yra pelių prietaisų, specialiai sukurtų kairiaran...
Mėgdžiokite pelės paspaudimus, užveskite pelės žymeklį naudodami pelę „Clickless Mouse“ sistemoje „Windows 10“
Pelės ar klaviatūros naudojimas netinkamoje laikysenoje, kai naudojama per daug, gali sukelti daug sveikatos problemų, įskaitant įtampą, riešo kanalo ...
Pridėkite pelės gestus prie „Windows 10“ naudodami šiuos nemokamus įrankius
Pastaraisiais metais kompiuteriai ir operacinės sistemos labai išsivystė. Buvo laikas, kai vartotojai turėjo naudoti komandas naršydami per failų tvar...