Ц Програмирање

Величина оператора на Ц језику

Величина оператора на Ц језику
У овом чланку ћемо сазнати о величини оператора у Ц. То је широко коришћени унарни оператер у развоју уграђеног софтвера, који нам помаже да сазнамо величину операнда. Стога нам повратна вредност оператора сизеоф помаже да схватимо број бајтова додељених у меморији рачунара за чување одређене променљиве или типа података.

Разумевање величине:

Пре него што уђемо у расправу о величини оператора, прво схватимо значење оператора. Оператор је представљен жетоном или симболом који се користи за извођење операције као што је сабирање, одузимање, множење, дељење итд. на вредности или променљиве (операнди). На пример, „*“ је симбол који се користи за представљање операције множења и ради на два операнда (резултат = а * б;). Ово је пример бинарног оператора.

Међутим, ако оператор ради само на једном операнду, таквог оператора називамо унарним оператором. Оператор сизеоф је један од унарних оператора који постоје у програмском језику Ц и очигледно ради само на једном операнду. Оператор сизеоф враћа величину операнда. То значи, из повратне вредности оператора Сизеоф, можемо јасно рећи колико бајтова је додељено за држање одређеног операнда у меморији рачунара.

Меморија рачунара је скуп меморијских јединица (тј.е. бајт). Када сизеоф (инт) врати четири у одређеном рачунарском систему, можемо рећи да целобројној променљивој треба 4 бајта да задржи своју вредност у меморији тог одређеног рачунарског система. Такође, имајте на уму да повратна вредност величине оператора такође зависи од машина које користите (32-битни систем или 64-битни систем).

Синтакса:

Величина (врста)
Величина (израз)

Повратни тип сизеоф је сизе_т.

Примери:

Сада, пошто разумемо величину оператора и знамо синтаксу, погледајмо неколико примера који ће нам помоћи да концепт разумемо на бољи начин.

Величина за уграђене типове (пример1.ц):

У овом програму видећемо како оператор сизеоф ради за уграђене типове података као што су инт, цхар, флоат, доубле. Погледајмо програм и резултате.

#инцлуде
инт маин ()

принтф ("Величина цхар =% лд \ н", сизеоф (цхар));
принтф ("Величина инт =% лд \ н", величина (инт));
принтф ("Величина флоат-а =% лд \ н", сизеоф (флоат));
принтф ("Величина дупла =% лд \ н \ н", величина (двострука));
принтф ("Величина кратког инт =% лд \ н", величина (кратког инт));
принтф ("Величина лонг инт =% лд \ н", сизеоф (лонг инт));
принтф ("Величина лонг лонг инт =% лд \ н", сизеоф (лонг лонг инт));
принтф ("Величина дуге дупле =% лд \ н", величина (дуге дупле));
ретурн 0;

Сизеоф за низ (пример2.ц)

У овом програму видећемо како да користимо оператор сизеоф за различите типове низова. У случају низа, оператер сизеоф ће се вратити (бр. елемената у пољу * Сизеоф (врста низа)). На пример, када прогласимо целобројни низ од 10 елемената (инт СмартПхонес [10];), вратиће се сизеоф (паметни телефони):

(Не. елемената у паметним телефонима * сизеоф (инт)) = (10 * 4) = 40

Погледајмо програм и резултате.

#инцлуде
инт маин ()

инт СмартПхонес [10];
цхар СмартПхонеНамес [10];
двоструки СмартПхонесПрице [10];
принтф ("Величина инт =% лд \ н", величина (инт));
принтф ("Величина цхар =% лд \ н", сизеоф (цхар));
принтф ("Величина дуплог =% лд \ н", величина (двоструког));
/ * Сазнајте величину низа * /
принтф ("Величина паметних телефона [10] =% лд \ н", величина (паметних телефона));
принтф ("Величина имена паметних телефона [10] =% лд \ н", величина (имена паметних телефона));
принтф ("Величина цене СмартПхонесПрице [10] =% лд \ н", величина (СмартПхонесПрице));
ретурн 0;

Сизеоф за кориснички дефинисане типове (пример3.ц):

У овом примеру видећемо како се користи сизеоф оператор за кориснички дефинисане типове података као што су структура и унија. Користимо програм и схватимо резултате.

Сада, гледајући програм, можемо ручно израчунати величину СмартПхонеТипе. Као што можете видети доле, СмартПхонеТипе је структура и садржи следеће елементе:

  • Број променљиве типа знака = 1 [име_помена]
  • Број променљиве целобројног типа = 1 [сп_версион]
  • Број променљивих типа флоат = 3 [сп_ленгтх, сп_видтх, сп_хеигхт]

Из примера-1 видели смо да:

    • Величина карактера је 1 бајт
    • Величина целог броја је 4 бајта
    • Величина пловка је 4 бајта

Стога, ако збројимо величину свих елемената у структури, требали бисмо бити у могућности да добијемо величину структуре, тј.е. СмартПхонеТипе. Према томе, величина структуре треба да буде = (1 + 4 + 4 + 4 + 4) бајтова = 17 бајтова. Међутим, излаз програма каже да је величина структуре 20. Додатна 3 бајта (име_ сп_име, које је знак, узима 4 бајта уместо 1 бајта) додељена структури због додавања структуре.

#инцлуде
/ * Креирајте кориснички дефинисани тип структуре - СмартПхонеТипе * /
струцт СмартПхонеТипе

цхар сп_наме;
инт сп_версион;
флоат сп_ленгтх;
плутајућа сп_видтх;
плутајуће сп_хеигхт;
СмартПхоне;
/ * Дефинишите кориснички дефинисани тип уније - СмартПхонеУнионТипе * /
Унион СмартПхонеУнионТипе

цхар сп_наме;
инт сп_версион;
флоат сп_ленгтх;
плутајућа сп_видтх;
плутајуће сп_хеигхт;
СмартПхоне_у;
инт маин ()

/ * Сазнајте величину структуре и споја * /
принтф ("Величина структуре =% лд \ н", величина (СмартПхоне));
принтф ("Величина уније =% лд \ н", величина (СмартПхоне_у));
ретурн 0;

Величина променљивих (пример4.ц):

Овај пример програма илуструје да је оператор сизеоф способан да прихвати и променљиву и врати величину променљиве.

#инцлуде
инт маин ()

/ * Декларишите променљиве и низ цхар, инт, флоат и доубле типе * /
цхар вар_а, вар_б [20];
инт вар_ц, вар_д [20];
плутају вар_е, вар_ф [20];
дупли вар_г, вар_х [20];
/ * Сазнајте величину променљивих и низа.
Овај програм показује да променљива такође може
користи се као величина операнда оператора * /
/ * величина цхар, цхар променљива и цхар низ * /
принтф ("Величина цхар =% лд \ н", сизеоф (цхар));
принтф ("Величина вар_а =% лд \ н", величина (вар_а));
принтф ("Величина вар_б [20] =% лд \ н \ н", величина (вар_б));
/ * величина инт, инт променљиве и инт низа * /
принтф ("Величина инт =% лд \ н", величина (инт));
принтф ("Величина вар_ц =% лд \ н", величина (вар_ц));
принтф ("Величина вар_д [20] =% лд \ н \ н", величина (вар_д));
/ * величина флоат, флоат променљиве и флоат низ * /
принтф ("Величина флоат-а =% лд \ н", сизеоф (флоат));
принтф ("Величина вар_е =% лд \ н", сизеоф (вар_е));
принтф ("Величина вар_ф [20] =% лд \ н \ н", величина (вар_ф));
/ * величина двоструке, двоструке променљиве и двоструког низа * /
принтф ("Величина дуплог =% лд \ н", величина (двоструког));
принтф ("Величина вар_г =% лд \ н", величина (вар_г));
принтф ("Величина вар_х [20] =% лд \ н", величина (вар_х));
ретурн 0;

Величина израза (пример5.ц):

У овом примеру програма показаћемо да оператор сизеоф такође може да прихвати израз и врати величину резултујућег израза.

#инцлуде
инт маин ()

инт вар_а = 5, вар_б = 3;
двоструки вар_ц = 2.5, вар_д = 4.5;
принтф ("Величина инт =% лд \ н", величина (инт));
принтф ("Величина дупла =% лд \ н \ н", величина (двострука));
принтф ("Величина вар_а * вар_б =% лд \ н", сизеоф (вар_а * вар_б));
принтф ("Величина вар_ц * вар_д =% лд \ н", сизеоф (вар_ц * вар_д));
/ * Овде множимо целобројну променљиву са двоструком променљивом.
Стога ће сизеоф оператор вратити величину максималне величине
променљива и.е. променљива двоструког типа.* /
принтф ("Величина вар_а * вар_ц =% лд \ н", сизеоф (вар_а * вар_ц));
ретурн 0;

Практична употреба величине (пример6.ц):

Овај пример програма помоћи ће вам да разумете практични случај употребе величине оператора. Оператор Сизеоф је веома користан док додељује динамичку меморију из гомиле користећи маллоц. Погледајмо програм и резултате.

#инцлуде
#инцлуде
типедеф струцт

цхар сп_наме;
инт сп_версион;
флоат сп_ленгтх;
плутајућа сп_видтх;
плутајуће сп_хеигхт;
СмартПхонеТипе;
инт маин ()

/ * Додијелите меморију у Хеап меморији за држање пет СмартПхонеТипе
Променљиве.
* /
СмартПхонеТипе * СмартПхоне_Птр = (СмартПхонеТипе *) маллоц (5 * величина (СмартПхонеТипе));
иф (СмартПхоне_Птр != НУЛЛ)

принтф ("Меморија додељена за пет променљивих структуре СмартПхонеТипе у
меморија гомиле.\ н ");

иначе

принтф ("Дошло је до грешке током доделе меморије гомиле!");

ретурн 0;

Закључак:

Сизеоф је важан унарни оператор у програмском језику Ц. Помаже нам у одређивању величине примитивних типова података, кориснички дефинисаних типова података, израза итд. у меморији рачунара. Оператор Сизеоф игра важну улогу у додељивању динамичке меморије на језику Ц користећи маллоц, цаллоц итд. у меморији Купе.

Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...
Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...
Најпопуларније лабораторијске игре Оцулус Апп
Ако сте власник Оцулус слушалица, онда морате бити упознати са бочним учитавањем. Бочно учитавање је поступак инсталирања не-продавничког садржаја на ...