Aina ya ukubwa ambayo haijasainiwa fupi c. Aina za data

Wakati wa kuandika programu katika lugha yoyote, unahitaji kutumia vigezo tofauti ili kuhifadhi habari tofauti. Vigezo si chochote ila maeneo ya kumbukumbu yaliyohifadhiwa kwa ajili ya kuhifadhi maadili. Hii ina maana kwamba unapounda kutofautiana, unahifadhi nafasi fulani kwenye kumbukumbu.

Unaweza kuhifadhi taarifa za aina mbalimbali za data kama vile herufi, herufi pana, nambari kamili, sehemu inayoelea, sehemu ya kuelea mara mbili, boolean, n.k. Kulingana na aina ya data ya kigezo, mfumo wa uendeshaji hutenga kumbukumbu na kuamua ni nini kinachoweza kuhifadhiwa kwenye kumbukumbu iliyohifadhiwa.

Aina za awali zilizojengwa

C++ humpa kitengeneza programu seti tajiri ya aina za data zilizojumuishwa na zilizobainishwa na mtumiaji. Jedwali zifuatazo zinaorodhesha aina saba kuu za data za C++:

Aina Neno muhimu
Boolean bool
Tabia char
Nambari kamili int
Sehemu ya kuelea kuelea
Sehemu ya kuelea mara mbili mara mbili
Isiyo na thamani utupu
Tabia pana wchar_t

Baadhi ya aina za kimsingi zinaweza kurekebishwa kwa kutumia kirekebishaji kimoja au zaidi cha aina hii:

  • saini
  • haijatiwa saini
  • mfupi

Jedwali lifuatalo linaonyesha aina ya kutofautiana, kiasi cha kumbukumbu kinachohitajika kuhifadhi thamani katika kumbukumbu, na ni thamani gani ya juu na ya chini ambayo inaweza kuhifadhiwa katika vigezo hivyo.

Aina Upana wa Kawaida wa Biti Safu ya Kawaida
char 1 baiti -127 hadi 127 au 0 hadi 255
char ambayo haijasainiwa 1 baiti 0 hadi 255
char iliyotiwa saini 1 baiti -127 hadi 127
int 4 baiti -2147483648 hadi 2147483647
int isiyotiwa saini 4 baiti 0 hadi 4294967295
saini int 4 baiti -2147483648 hadi 2147483647
int fupi 2 baiti -32768 hadi 32767
int fupi isiyotiwa saini Masafa 0 hadi 65,535
saini int fupi Masafa -32768 hadi 32767
int ndefu 4 baiti -2,147,483,648 hadi 2,147,483,647
saini int ndefu 4 baiti sawa na int ndefu
int ndefu isiyo na saini 4 baiti 0 hadi 4,294,967,295
kuelea 4 baiti +/- 3.4e +/- 38 (~ tarakimu 7)
mara mbili 8 baiti
mrefu mara mbili 8 baiti +/- 1.7e +/- 308 (~ tarakimu 15)
wchar_t 2 au 4 ka herufi 1 pana

Saizi ya vigeu inaweza kutofautiana na saizi iliyoonyeshwa kwenye jedwali hapo juu, kulingana na mkusanyaji na kompyuta unayotumia. Chini ni mfano ambao utatoa saizi sahihi ya aina tofauti za data kwenye kompyuta yako.

#pamoja na kutumia nafasi ya majina std; int main() ( cout<< "Size of char: " << sizeof(char) << endl; cout << "Size of int: " << sizeof(int) << endl; cout << "Size of short int: " << sizeof(short int) << endl; cout << "Size of long int: " << sizeof(long int) << endl; cout << "Size of float: " << sizeof(float) << endl; cout << "Size of double: " << sizeof(double) << endl; cout << "Size of wchar_t: " << sizeof(wchar_t) << endl; return 0; }

Mfano huu unatumia mwisho ambayo huleta herufi mpya baada ya kila mstari, na mwendeshaji<< используется для передачи нескольких значений на экран. Мы также используем оператор saizi() kupata ukubwa wa aina mbalimbali za data.

Wakati nambari iliyo hapo juu inakusanywa na kutekelezwa, hutoa matokeo yafuatayo, ambayo yanaweza kutofautiana kutoka kwa mashine hadi mashine:

Ukubwa wa char: 1 Ukubwa wa int: 4 Ukubwa wa int fupi: 2 Ukubwa wa int ndefu: 4 Ukubwa wa kuelea: 4 Ukubwa wa mara mbili: 8 Ukubwa wa wchar_t: 4

Matangazo ya Typedef

Unaweza kuunda jina jipya la aina iliyopo kwa kutumia typedef. Ifuatayo ni syntax rahisi ya kufafanua aina mpya kwa kutumia typedef:

Typedef jina jipya;

Kwa mfano, ifuatayo inamwambia mkusanyaji kwamba miguu ni jina lingine la int:

Typedef int miguu;

Sasa tamko lifuatalo ni halali kabisa na huunda kigezo kamili kinachoitwa umbali:

Umbali wa miguu

Aina zilizoorodheshwa

Aina iliyoorodheshwa hutangaza jina la aina ya hiari na seti ya vitambulishi sifuri au zaidi ambavyo vinaweza kutumika kama thamani za aina. Kila mdadisi ni hesabu ambayo aina yake ni hesabu. Kuunda hesabu kunahitaji matumizi ya neno kuu enum. Mtazamo wa jumla wa aina ya hesabu:

Enum enum-name ( orodha ya majina ) var-orodha;

Hapa enum-name ni jina la aina ya enum. Orodha ya majina imetenganishwa na koma. Kwa mfano, msimbo ufuatao unafafanua hesabu ya rangi inayoitwa rangi na c tofauti ya rangi ya aina. Hatimaye, c imepewa thamani "bluu".

Enum rangi (nyekundu, kijani, bluu) c; c = bluu;

Kwa chaguo-msingi, jina la kwanza lina thamani ya 0, jina la pili lina thamani ya 1, na ya tatu ina thamani ya 2, nk. Lakini unaweza kufanya jina thamani maalum kwa kuongeza kianzilishi. Kwa mfano, katika hesabu ifuatayo, kijani kitakuwa na thamani 5.

Enum rangi (nyekundu, kijani = 5, bluu);

Hapa bluu itakuwa na thamani ya 6 kwa sababu kila jina litakuwa kubwa kuliko la awali.

Sasisho la mwisho: 09/17/2017

Kila kigezo kina aina maalum. Na aina hii huamua ni maadili gani yanaweza kuwa na kutofautisha, ni shughuli gani zinaweza kufanywa juu yake, na ni kaiti ngapi kwenye kumbukumbu itachukua. Aina zifuatazo za data za kimsingi zimefafanuliwa katika lugha ya C++:

    bool: aina ya boolean. Inaweza kuchukua moja ya maadili mawili: kweli na uongo. Alama ya kumbukumbu ya aina hii haijafafanuliwa kwa usahihi.

    char : Inawakilisha herufi moja ya ASCII. Inachukua baiti 1 (biti 8) kwenye kumbukumbu. Inaweza kuhifadhi thamani yoyote kutoka -128 hadi 127, au kutoka 0 hadi 255

    herufi iliyotiwa sahihi : Inawakilisha herufi moja. Inachukua baiti 1 (biti 8) kwenye kumbukumbu. Inaweza kuhifadhi thamani yoyote kutoka -128 hadi 127

    herufi ambayo haijatiwa saini : Inawakilisha herufi moja. Inachukua baiti 1 (biti 8) kwenye kumbukumbu. Inaweza kuhifadhi thamani yoyote kutoka 0 hadi 255

    wchar_t : Inawakilisha herufi pana. Kwenye Windows inachukua hadi ka 2 (biti 16) za kumbukumbu, kwenye Linux inachukua ka 4 (biti 32). Inaweza kuhifadhi thamani yoyote kutoka fungu la 0 hadi 65,535 (kwa baiti 2), au kutoka 0 hadi 4,294,967,295 (kwa baiti 4)

    char16_t : Inawakilisha herufi moja ya Unicode. Inachukua baiti 2 (biti 16) kwenye kumbukumbu. Inaweza kuhifadhi thamani yoyote kutoka 0 hadi 65,535

    char32_t : Inawakilisha herufi moja ya Unicode. Inachukua baiti 4 (biti 32) kwenye kumbukumbu. Inaweza kuhifadhi thamani yoyote kutoka 0 hadi 4,294,967,295

    fupi : Inawakilisha nambari kamili katika safu -32768 hadi 32767. Inachukua baiti 2 (biti 16) za kumbukumbu.

    Aina hii pia ina visawe int fupi, int fupi iliyosainiwa, iliyosainiwa fupi.

    fupi isiyo na saini: Inawakilisha nambari kamili katika masafa 0 hadi 65535. Inachukua baiti 2 (biti 16) za kumbukumbu.

    Aina hii pia ina kisawe kisichotiwa saini int .

    int: inawakilisha nambari kamili. Kulingana na usanifu wa processor, inaweza kuchukua ka 2 (bits 16) au 4 byte (32 bits). Msururu wa thamani za kikomo ipasavyo unaweza pia kutofautiana kutoka -32768 hadi 32767 (na baiti 2) au kutoka -2,147,483,648 hadi 2,147,483,647 (na baiti 4). Lakini kwa hali yoyote, saizi lazima iwe kubwa kuliko au sawa na saizi ya aina fupi na chini ya au sawa na saizi ya aina ndefu.

    Aina hii ina visawe vilivyotiwa saini na kusainiwa .

    int isiyotiwa saini : Inawakilisha nambari kamili chanya. Kulingana na usanifu wa processor, inaweza kuchukua ka 2 (biti 16) au ka 4 (bits 32), na kwa sababu ya hii, anuwai ya maadili ya kikomo yanaweza kutofautiana: kutoka 0 hadi 65535 (kwa ka 2), au kutoka. 0 hadi 4,294,967,295 (kwa baiti 4).

    ambayo haijatiwa saini inaweza kutumika kama kisawe cha aina hii

    long : Inawakilisha nambari kamili katika safu −2,147,483,648 hadi 2,147,483,647. Huchukua baiti 4 (biti 32) za kumbukumbu.

    Aina hii pia ina visawe vya muda mrefu int , vilivyotiwa saini kwa int ndefu na kusainiwa kwa muda mrefu

    ndefu isiyo na saini: Inawakilisha nambari kamili katika masafa 0 hadi 4,294,967,295. Inachukua baiti 4 (biti 32) za kumbukumbu.

    Ina kisawe ambacho hakijatiwa saini kwa muda mrefu int .

    muda mrefu : Huwakilisha nambari kamili katika masafa -9,223,372,036,854,775,808 hadi +9,223,372,036,854,775,807. Kawaida huchukua baiti 8 (biti 64) za kumbukumbu.

    Ina visawe kwa muda mrefu int , iliyosainiwa kwa muda mrefu int na kusainiwa kwa muda mrefu .

    ndefu isiyo na saini : Inawakilisha nambari kamili katika safu 0 hadi 18,446,744,073,709,551,615. Kwa kawaida huchukua baiti 8 (biti 64) za kumbukumbu.

    Ina kisawe ambacho hakijatiwa saini kwa muda mrefu int .

    float : Inawakilisha nambari halisi ya uhakika mmoja inayoelea katika safu +/- 3.4E-38 hadi 3.4E+38. Inachukua baiti 4 (biti 32) kwenye kumbukumbu

    double : Inawakilisha nambari halisi ya uhakika inayoelea maradufu katika safu +/- 1.7E-308 hadi 1.7E+308. Inachukua baiti 8 (biti 64) kwenye kumbukumbu

    long double : Inawakilisha nambari halisi ya uhakika-mbili ya kuelea ya angalau baiti 8 (biti 64). Kulingana na saizi ya kumbukumbu iliyochukuliwa, anuwai ya maadili halali yanaweza kutofautiana.

    void : aina bila thamani

Kwa hivyo, aina zote za data isipokuwa batili zinaweza kugawanywa katika vikundi vitatu: herufi (char, wchar_t, char16_t, char32_t), nambari kamili (fupi, int, ndefu, ndefu) na aina za nambari za kuelea (kuelea, mbili, ndefu mbili).

Aina za wahusika

Aina zinazotumika kuwakilisha herufi katika programu ni char, wchar_t, char16_t, na char32_t.

Wacha tufafanue anuwai kadhaa:

Char c="d"; wchar_t d="c";

Tofauti ya char inachukua kama thamani yake herufi moja katika nukuu moja: char c ="d" . Unaweza pia kukabidhi nambari kutoka kwa safu iliyobainishwa hapo juu kwenye orodha: char c = 120 . Katika kesi hii, thamani ya kutofautiana c itakuwa tabia ambayo ina msimbo 120 katika meza ya tabia ya ASCII.

Inafaa kuzingatia kuwa kutoa herufi wchar_t kwa koni, haifai kutumia std::cout, lakini mkondo wa std::wcout:

#pamoja na int main() ( char a = "H"; wchar_t b = "e"; std::wcout<< a << b << "\n"; return 0; }

Katika hali hii, mkondo wa std::wcout unaweza kufanya kazi na char na wchar_t. Na mtiririko wa std::cout wa utaftaji wa wchar_t utatoa nambari yake badala ya herufi.

Kiwango cha C++11 kiliongeza aina za char16_t na char32_t, ambazo zimeelekezwa kwa kutumia Unicode. Walakini, nyuzi za kufanya kazi na aina hizi bado hazijatekelezwa katika kiwango cha OS. Kwa hivyo, ikiwa unahitaji kuonyesha maadili ya anuwai ya aina hizi kwenye koni, unahitaji kubadilisha anuwai kuwa aina char au wchar_t:

#pamoja na int main() ( char a = "H"; wchar_t b = "e"; char16_t c = "l"; char32_t d = "o"; std::cout<< a << (char)b << (char)c << (char)d << "\n"; return 0; }

Katika kesi hii, wakati wa kutoa, anuwai hutanguliwa na operesheni ya kutupwa kwa aina ya char - (char) , kwa sababu ambayo maadili ya anuwai b, c na d hubadilishwa kuwa aina ya char na inaweza kutolewa koni kwa kutumia std::cout mkondo.

Aina kamili

Aina kamili zinawakilishwa na aina zifuatazo: fupi, fupi isiyo na saini, int, int isiyo na saini, ndefu, ndefu isiyo na saini, ndefu ndefu na ndefu isiyo na saini:

Fupi a = -10; fupi isiyotiwa saini b= 10; int c = -30; unsigned int d = 60; muda mrefu e = -170; unsigned ndefu f = 45; muda mrefu g = 89;

Aina za nambari za sehemu zinazoelea

Nambari za sehemu zinazoelea na sehemu zinawakilishwa na kuelea, mbili na ndefu mbili:

Kuelea a = -10.45; mara mbili b = 0.00105; muda mrefu mara mbili c = 30.890045;

Ukubwa wa aina ya data

Orodha hapo juu inaonyesha kwa kila aina saizi ambayo inachukua kwenye kumbukumbu. Hata hivyo, ni muhimu kuzingatia kwamba watengenezaji wa compiler wanaweza kuchagua mipaka ya ukubwa kwa aina kwa kujitegemea, kulingana na uwezo wa vifaa vya kompyuta. Kiwango huweka tu maadili ya chini ambayo yanapaswa kuwa. Kwa mfano, kwa int na aina fupi thamani ya chini ni bits 16, kwa aina ya muda mrefu - bits 32, kwa aina mbili ndefu. Katika kesi hii, saizi ya aina ndefu lazima iwe chini ya saizi ya aina ya int, na saizi ya aina ya int haipaswi kuwa chini ya saizi ya aina fupi, na saizi ya aina mbili ndefu lazima. kuwa kubwa kuliko mara mbili. Kwa mfano, mkusanyaji wa g++ wa Windows hutumia baiti 12 kwa maradufu ndefu, na mkusanyaji aliyejengwa ndani ya Visual Studio na pia anaendesha chini ya Windows hutumia baiti 8 kwa maradufu ndefu. Hiyo ni, hata ndani ya jukwaa moja, wakusanyaji tofauti wanaweza kuwa na mbinu tofauti za ukubwa wa aina fulani za data. Lakini kwa ujumla, saizi ambazo zimeonyeshwa hapo juu wakati wa kuelezea aina za data hutumiwa.

Hata hivyo, kuna hali wakati ni muhimu kujua hasa ukubwa wa aina fulani. Na kwa hili, C++ ina sizeof() opereta, ambayo inarudisha saizi ya kumbukumbu katika ka ambazo kutofautisha kunachukua:

#pamoja na int main() ( namba mbili ndefu = 2; std::cout<< "sizeof(number) =" << sizeof(number); return 0; }

Pato la Console wakati wa kuunda katika g++:

saizi(idadi) = 12

Wakati huo huo, wakati wa kufafanua vigezo, ni muhimu kuelewa kwamba thamani ya kutofautiana haipaswi kwenda zaidi ya mipaka iliyoelezwa kwa aina yake. Kwa mfano:

Nambari fupi isiyotiwa saini = -65535;

Kikusanyaji cha G++, wakati wa kuandaa programu na laini hii, kitatoa hitilafu ikisema kwamba thamani -65535 haiko ndani ya anuwai ya thamani halali za aina fupi isiyo na saini na itapunguzwa.

Katika Studio ya Visual, mkusanyiko unaweza kuendelea bila makosa, lakini kutofautisha kwa nambari kutapokea thamani 2 - matokeo ya kubadilisha nambari -65535 kuwa aina fupi isiyosajiliwa. Hiyo ni, tena, matokeo hayatakuwa yale yanayotarajiwa. Thamani ya kutofautisha ni mkusanyiko tu wa biti kwenye kumbukumbu ambazo hufasiriwa kulingana na aina maalum. Na kwa aina tofauti, seti sawa ya bits inaweza kutafsiriwa tofauti. Kwa hivyo, ni muhimu kuzingatia safu za thamani za aina fulani wakati wa kugawa thamani kwa kigezo.

kielezi otomatiki

Wakati mwingine inaweza kuwa vigumu kuamua aina ya kujieleza. Na kwa mujibu wa viwango vya hivi karibuni, unaweza kuruhusu mkusanyaji kutafakari aina ya kitu yenyewe. Na kiashiria kiotomatiki kinatumika kwa hili. Kwa kuongezea, ikiwa tutafafanua kigezo na kiambishi kiotomatiki, utaftaji huu lazima uanzishwe na thamani fulani:

Nambari ya otomatiki = 5;

Kulingana na thamani iliyokabidhiwa, mkusanyaji atakisia aina ya kutofautisha. Vigezo ambavyo havijaanzishwa vilivyo na kibainishi otomatiki haviruhusiwi.

Aina za data katika C ni darasa la data ambalo thamani zake zina sifa zinazofanana. Aina inafafanua uwakilishi wa ndani wa data katika kumbukumbu. Aina za data za msingi zaidi: mantiki, nambari kamili, nambari za sehemu zinazoelea, mifuatano, viashiria.

Kwa uchapaji unaobadilika, kigezo kinahusishwa na aina wakati wa uanzishaji. Inatokea kwamba kutofautiana katika sehemu tofauti za kanuni inaweza kuwa na aina tofauti. Kuandika kwa nguvu kunatumika na Java Script, Python, Ruby, PHP.

Kuandika tuli ni kinyume cha uchapaji unaobadilika. Inapotangazwa, kigezo hupokea aina ambayo haibadiliki baadaye. Lugha C na C++ ni kama hivyo. Njia hii ndiyo inayofaa zaidi kwa kuandika nambari ngumu, na makosa mengi huondolewa katika hatua ya mkusanyiko.

Lugha zimegawanywa kwa njia isiyo rasmi kuwa chapa kali na chapa dhaifu. Kuandika kwa nguvu kunamaanisha kuwa mkusanyaji atatupa makosa ikiwa aina zinazotarajiwa na halisi hazilingani.

x = 1 + "2"; //kosa - huwezi kuongeza ishara kwa nambari

Mfano wa uchapaji dhaifu.

Uchunguzi wa uthabiti wa aina unafanywa na mfumo wa usalama wa aina. Hitilafu ya kuandika hutokea, kwa mfano, wakati wa kujaribu kutumia nambari kama chaguo la kukokotoa. Kuna lugha ambazo hazijachapishwa. Tofauti na zile zilizochapwa, hukuruhusu kufanya operesheni yoyote kwenye kila kitu.

Madarasa ya kumbukumbu

Vigezo, bila kujali aina yao, vina upeo wao wenyewe na maisha.

Madarasa ya kumbukumbu:

  • otomatiki;
  • tuli;
  • nje;
  • kujiandikisha.

Vigezo vyote katika lugha C ni vya kawaida kwa chaguo-msingi. Wanaweza kutumika tu ndani ya chaguo za kukokotoa au kizuizi. Chaguo la kukokotoa linapokamilika, thamani yao inaharibiwa.

Tofauti tuli pia ni ya ndani, lakini inaweza kuwa na thamani tofauti nje ya kizuizi chake, na thamani huhifadhiwa kati ya simu za kukokotoa.

Tofauti ya nje ni ya kimataifa. Inapatikana katika sehemu yoyote ya msimbo na hata katika faili nyingine.

Viainishi vya aina ya data katika C huenda visibainishwe katika hali zifuatazo:

  1. Vigezo vyote ndani ya kizuizi sio vigeugeu; kwa hivyo, ikiwa darasa hili la kumbukumbu limekusudiwa kutumiwa, basi kibainishi kiotomatiki hakijabainishwa.
  2. Vitendaji vyote vilivyotangazwa nje ya kizuizi au chaguo za kukokotoa ni za kimataifa kwa chaguomsingi, kwa hivyo kibainishi cha nje hakihitajiki.

Ili kuonyesha aina rahisi, tumia viambishi vya int, char, kuelea au viwili. Virekebishaji ambavyo havijatiwa saini, vilivyotiwa saini, vifupi, virefu, virefu vinaweza kubadilishwa na vigeuzo.

Kwa chaguo-msingi, nambari zote zimesainiwa, kwa hivyo, zinaweza tu kuwa katika anuwai ya nambari chanya. Ili kufafanua tofauti ya aina ya char kama ilivyotiwa saini, andika char iliyotiwa sahihi. Muda mrefu, mrefu, na mfupi unaonyesha ni kiasi gani cha nafasi ya kumbukumbu imetengwa kwa ajili ya kuhifadhi. Kubwa ni ndefu, ndogo ni fupi.

Char ndio aina ndogo zaidi ya data katika C. Baiti 1 pekee ya kumbukumbu imetengwa kuhifadhi thamani. Tofauti ya tabia ya aina kawaida hupewa herufi, mara chache - nambari. Thamani za wahusika zimefungwa katika alama za nukuu.

Aina ya int huhifadhi nambari, saizi yake haijafafanuliwa - inachukua hadi ka 4 za kumbukumbu, kulingana na usanifu wa kompyuta.

Ubadilishaji dhahiri wa kigezo kisicho na saini umebainishwa kama ifuatavyo:

Iliyowekwa wazi inaonekana kama hii:

Elea na ubainishe nambari mara mbili kwa nukta. Nambari za kuelea zinawakilishwa kama -2.3 au 3.34. Mara mbili hutumika kwa usahihi zaidi - tarakimu zaidi huonyeshwa baada ya kitenganishi kamili na cha sehemu. Aina hii inachukua nafasi zaidi ya kumbukumbu kuliko kuelea.

Utupu una thamani tupu. Inafafanua kazi ambazo hazirudishi chochote. Kiainishi hiki kinabainisha thamani tupu katika hoja za mbinu. Viashiria, ambavyo vinaweza kukubali aina yoyote ya data, pia hufafanuliwa kuwa batili.

Boolean aina Bool

Inatumika katika vipimo vya hali na vitanzi. Ina maana mbili tu:

  • kweli;
  • uongo.

Thamani za Boolean zinaweza kubadilishwa kuwa thamani ya int. Kweli ni sawa na moja, uongo ni sawa na sifuri. Ubadilishaji wa aina unawezekana tu kati ya bool na int, vinginevyo mkusanyaji atatupa kosa.

ikiwa (x) ( //Kosa: "Haiwezi kubadilisha kabisa aina ya 'int' kuwa 'bool""

ikiwa (x != 0) // Njia ya C#

Kamba na Arrays

Mkusanyiko ni aina changamano za data katika C. PL haifanyi kazi na kamba kwa njia sawa na Javascript au Ruby. Katika C, mifuatano yote ni safu za vipengee vyenye thamani ya herufi. Mistari inaisha kwa baiti isiyofaa "

Mbali na kugawanya data katika vigezo na mara kwa mara, kuna uainishaji wa data kwa aina. Maelezo ya vigezo kimsingi yanajumuisha kutangaza aina zao. Aina ya data ina sifa ya anuwai ya maadili yake na aina ya uwakilishi kwenye kumbukumbu ya kompyuta. Kila aina ina sifa ya seti ya shughuli zinazofanywa kwenye data. Kijadi, lugha za programu za madhumuni ya jumla zina aina za kawaida kama vile nambari kamili, halisi, herufi na mantiki 3 . Wacha tuangalie mara moja kuwa hakuna aina ya kimantiki katika C. Usemi (katika kesi fulani, kutofautisha) inachukuliwa kuwa kweli ikiwa sio sifuri, vinginevyo inachukuliwa kuwa ya uwongo.

Uwepo wa aina mbili za nambari (integer na halisi) huhusishwa na aina mbili zinazowezekana za nambari zinazowakilisha kwenye kumbukumbu ya kompyuta.

Data aina nzima kuhifadhiwa katika fomu ya uwasilishaji uhakika fasta. Inajulikana kwa usahihi kabisa katika kuwakilisha nambari na kufanya shughuli juu yao, pamoja na upeo mdogo wa maadili ya nambari. Aina kamili hutumiwa kwa data ambayo, kimsingi, haiwezi kuwa na sehemu ya sehemu (idadi ya watu, magari, nk, nambari na vihesabio).

Andika halisi inalingana na fomu ya uwakilishi wa nambari hatua ya kuelea, ambayo ina sifa ya takriban uwakilishi wa nambari iliyo na nambari fulani ya tarakimu muhimu (ishara za mantissa) na safu kubwa ya utaratibu wa nambari, ambayo inafanya uwezekano wa kuwakilisha namba kubwa sana na ndogo sana kwa thamani kamili. Kwa sababu ya uwakilishi wa takriban wa data ya aina halisi, yao si sahihi kulinganisha kwa usawa.

Katika utekelezaji wa kisasa wa lugha za programu za ulimwengu, kawaida kuna idadi kubwa na aina kadhaa halisi, ambayo kila moja ina sifa ya saizi yake ya kumbukumbu iliyotengwa kwa thamani moja na, ipasavyo, anuwai ya nambari, na kwa aina halisi - na usahihi wake. (idadi ya tarakimu za mantissa).

Data aina ya mhusika chukua maadili kwenye seti nzima ya herufi zinazoruhusiwa kwa kompyuta fulani. Baiti moja imetengwa kuhifadhi thamani ya herufi moja; herufi husimbwa kwa mujibu wa jedwali la kawaida la usimbaji (kawaida ASCII).

Kuna aina 4 za msingi katika C:

char- aina ya tabia;

int- aina nzima,

kuelea- usahihi wa aina moja halisi,

mara mbili- usahihi mara mbili aina halisi.

Ili kufafanua aina zinazotokana, tumia wahitimu:mfupi(fupi) - hutumiwa na aina int,ndefu(muda mrefu) - hutumiwa na aina int Na mara mbili;saini(na ishara), haijatiwa saini(isiyo na saini) - inatumika kwa aina yoyote kamili. Kwa kukosekana kwa neno lisilosainiwa, thamani inachukuliwa kuwa saini, i.e. yaani chaguo-msingi imetiwa saini. Kwa sababu ya kukubalika kwa mchanganyiko wa kiholela wa wahitimu na majina ya aina za msingi, aina moja inaweza kuwa na sifa kadhaa. Taarifa kuhusu aina za kawaida za C zimewasilishwa katika Jedwali la 1 na 2. Vifafanuzi vya visawe vimeorodheshwa katika seli za safu wima ya kwanza, zikitenganishwa na koma.

Jedwali 1. Aina za data kamili za Kawaida C

Aina ya data

Msururu wa maadili

char, char iliyotiwa saini

int isiyotiwa saini, haijatiwa saini

int, int iliyosainiwa, int fupi, fupi

2147483648...2147483647

Inafurahisha, katika C, aina ya char inaweza kutumika kama mhusika au aina kamili, kulingana na muktadha.

Jedwali 2. Aina za data halisi za Kawaida C

Maoni. Kuandika programu kwa sehemu ya kwanza ya mwongozo, tutahitaji hasa aina mbili:kueleaNaint.

Katika programu, aina ya data ni mkusanyiko wa seti mbili: seti ya maadili na seti ya shughuli ambazo zinaweza kutumika kwao. Kwa mfano, utendakazi wa kujumlisha (+), kuzidisha (*), mgawanyo kamili (/), salio (%), na kutoa (-) unaweza kutumika kwa aina ya data kamili isiyo hasi inayojumuisha seti maalum ya nambari asilia.

Lugha ya programu kwa kawaida huwa na seti ya aina za data za awali—aina zinazotolewa na lugha ya programu kama kitengo cha msingi kilichojumuishwa. Katika C++, muundaji wa lugha huita aina kama hizo aina za kimsingi. Aina za msingi katika C++ ni:

  • boolean (bool);
  • tabia (mfano char);
  • int (km int);
  • sehemu ya kuelea (kwa mfano kuelea);
  • hesabu (iliyofafanuliwa na programu);
  • utupu.

Juu ya hizo zilizoorodheshwa, aina zifuatazo zimejengwa:

  • maonyesho (km int*);
  • safu (mfano char);
  • rejeleo (km mara mbili&);
  • miundo mingine.

Hebu tuendelee kwenye dhana ya neno halisi (kwa mfano, 1, 2.4F, 25e-4, 'a', nk.): halisi ni ingizo katika msimbo wa chanzo wa programu ambayo inawakilisha thamani isiyobadilika. Kwa maneno mengine, halisi ni uwakilishi wa kitu (thamani) ya aina fulani katika msimbo wa programu. C++ ina uwezo wa kuandika nambari kamili, nukta inayoelea, herufi, boolean na nambari za mfuatano.

Aina kamili inaweza kuandikwa kama:

  • Mfumo wa nambari 10. Kwa mfano, 1205;
  • Mfumo wa nambari ya 8 katika umbizo la 0 + nambari. Kwa mfano, 0142;
  • Mfumo wa nambari ya 16 katika umbizo la 0x + nambari. Kwa mfano, 0x2F.

24, 030, 0x18 - hizi zote ni rekodi za nambari sawa katika mifumo tofauti ya nambari.
Ili kuandika nambari za sehemu zinazoelea, tumia nukuu ya nukta: 0.1, .5, 4. - ama kwa
nukuu ya kielelezo - 25e-100. Haipaswi kuwa na nafasi katika rekodi kama hiyo.

Jina ambalo tunaweza kuhusisha maadili yaliyoandikwa kwa maandishi huitwa kutofautisha. Kigezo ni eneo la kumbukumbu linaloitwa au linaloweza kushughulikiwa ambalo anwani yake inaweza kutumika kufikia data. Data hii imeandikwa, imeandikwa upya na kufutwa katika kumbukumbu kwa njia fulani wakati wa utekelezaji wa programu. Tofauti hukuruhusu kufikia data wakati wowote na, ikiwa ni lazima, ubadilishe. Data ambayo inaweza kupatikana kutoka kwa jina tofauti inaitwa thamani ya kutofautiana.
Ili kutumia kutofautiana katika programu, lazima itangazwe, na ikiwa ni lazima, inaweza kuelezwa (= iliyoanzishwa). Tamko la kutofautisha katika maandishi ya programu lazima liwe na sehemu 2: aina ya msingi na kitangazaji. Kiainishi na kianzilishi ni sehemu za hiari:

Const int mfano = 3; // hapa const ni kibainishi // int ni aina ya msingi // mfano ni jina la kutofautisha // = 3 - kianzilishi.

Jina badilifu ni mfuatano wa herufi zinazojumuisha herufi za alfabeti ya Kilatini (herufi ndogo na kubwa), nambari na/au alama chini, lakini herufi ya kwanza haiwezi kuwa nambari. Jina la kutofautisha linapaswa kuchaguliwa ili iwe rahisi kila wakati kukisia inahifadhi nini, kwa mfano, "Malipo ya mwezi". Katika madokezo na kwa vitendo, tutatumia nukuu ya CamelCase kwa sheria za kurekodi anuwai. Jina la kutofautisha haliwezi sanjari na maneno yaliyohifadhiwa katika lugha; mifano ya maneno kama haya ni: ikiwa, wakati, kazi, goto, badilisha, n.k.

Kwa kuongezea jina la kutofautisha, mtangazaji anaweza kuwa na herufi za ziada:

  • * - pointer; kabla ya jina;
  • * const - pointer mara kwa mara; kabla ya jina;
  • & - kiungo; kabla ya jina;
  • - safu; baada ya jina;
  • () - kazi; baada ya jina.

Kianzishaji hukuruhusu kufafanua thamani ya kibadilishaji mara baada ya tamko lake. Kianzilishi huanza na usawa halisi (=) na kisha kuendelea kuweka thamani ya kutofautisha. Kwa ujumla, ishara sawa katika C++ inaashiria operesheni ya mgawo; kwa msaada wake unaweza kuweka na kubadilisha thamani ya kutofautisha. Inaweza kuwa tofauti kwa aina tofauti.

Kiainishi kinabainisha sifa za ziada isipokuwa aina. Kibainishi cha const kilichotolewa katika mfano hukuruhusu kuzuia mabadiliko yanayofuata kwa thamani ya kutofautisha. Vigezo vile visivyoweza kubadilika huitwa mara kwa mara au mara kwa mara.

Kutangaza mara kwa mara bila kuanzishwa haitafanya kazi kwa sababu za kimantiki:

Const int EMPTY_CONST; // kosa, kutofautiana mara kwa mara haijaanzishwa const int EXAMPLE = 2; // mara kwa mara na thamani 2 MFANO = 3; // hitilafu, jaribu kugawa thamani kwa kutofautiana mara kwa mara

Wakati wa kutaja viunga, ni kawaida kutumia herufi kubwa tu, kutenganisha maneno na herufi ya chini.

Aina za data za msingi katika C++

Wakati wa kuchunguza kila aina, msomaji asipaswi kusahau kuhusu ufafanuzi wa aina ya data.

1. Aina kamili (char, fupi (int), int, ndefu (int), ndefu ndefu)

Kutoka kwa jina ni rahisi kuelewa kuwa seti ya maadili ina nambari kamili. Pia, seti ya maadili ya kila moja ya aina zilizoorodheshwa zinaweza kusainiwa au kutotiwa saini. Idadi ya vipengele vilivyomo katika seti inategemea ukubwa wa kumbukumbu inayotumiwa kuhifadhi thamani ya aina hiyo. Kwa mfano, kwa tofauti ya aina char 1 byte ya kumbukumbu imetengwa, kwa hivyo vitu vyote vitakuwa:

  • 2 8N = 2 8 * 1 = 256, ambapo N ni saizi ya kumbukumbu katika baiti ili kuhifadhi thamani.

Katika kesi hii, safu za nambari zinazopatikana ni kama ifuatavyo.

  • - kwa char ambayo haijasainiwa
  • [-128..127] - kwa char iliyosainiwa

Kwa chaguo-msingi, kigezo kamili kinazingatiwa kuwa kimetiwa saini. Ili kuonyesha katika msimbo kwamba kutofautiana lazima kuachwa, sifa iliyosainiwa imeongezwa kwa aina ya msingi upande wa kushoto, i.e. haijatiwa saini:

maadili marefu ambayo hayajatiwa saini; // inabainisha nambari kamili (ndefu) isiyo na saini.

Aina zilizoorodheshwa hutofautiana tu katika saizi ya kumbukumbu inayohitajika kuhifadhi. Kwa kuwa lugha ya C++ inategemea mashine kabisa, kiwango cha lugha huhakikisha tu hali ifuatayo:

  • 1 = saizi ya char ≤ saizi fupi ≤ saizi ya int ≤ saizi ndefu.

Kawaida saizi za aina ni kama ifuatavyo: char - 1, fupi - 2, int - 4, ndefu -8, ndefu - 8 byte.

Unaweza kufanya shughuli za hesabu na maadili ya aina kamili: +, -, *, /,%; shughuli za kulinganisha: ==, !=,<=, <, >, >=; shughuli kidogo: &, |, xor,<<, >>.
Shughuli nyingi, kama vile kuongeza, kuzidisha, kutoa na kulinganisha, ni rahisi kuelewa. Wakati mwingine, baada ya kufanya shughuli za hesabu, matokeo yanaweza kuwa nje ya anuwai ya maadili; katika kesi hii programu itatoa hitilafu.
Mgawanyiko kamili (/) hupata sehemu kamili ya nambari moja ikigawanywa na nyingine. Kwa mfano:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

Alama ya asilimia (%) inaashiria utendakazi wa kuamua sehemu iliyobaki ya mgawanyiko wa nambari mbili kamili:

  • 6 % 4 = 2;
  • 10 % 3 = 1.

Vigumu zaidi kuelewa shughuli ni zile za busara kidogo: & (NA), | (AU), xor (kipekee AU),<< (побитовый сдвиг влево), >> (kuhama kidogo kulia).

Uendeshaji kidogo NA, AU na XOR hutumia utendakazi wa kimantiki unaolingana kwa kila sehemu ya habari:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 xor 3 10 = 01 2 xor 11 2 = 10 2

Katika usindikaji wa picha, njia 3 hutumiwa kwa rangi: nyekundu, bluu na kijani - pamoja na uwazi, ambazo zimehifadhiwa kwa kutofautiana kwa int, kwa sababu. kila chaneli ina anuwai ya maadili kutoka 0 hadi 255. Katika mfumo wa nambari ya hexadecimal, thamani fulani imeandikwa kama ifuatavyo: 0x180013FF; basi thamani 18 16 inalingana na channel nyekundu, 00 16 - bluu, 13 16 - kijani, FF - alpha channel (uwazi). Ili kuchagua chaneli maalum kutoka kwa nambari kamili kama hiyo, kinachojulikana kama chaneli hutumiwa. mask, ambapo nafasi za kupendeza kwetu ni F 16 au 1 2. Hiyo ni, ili kuonyesha thamani ya kituo cha bluu, lazima utumie mask, i.e. kidogo NA:

Int blue_channel = 0x180013FF & 0x00FF0000;

Baada ya hapo thamani inayotokana inahamishiwa kulia na nambari inayotakiwa ya bits.

Mabadiliko kidogo huhamisha nambari kushoto au kulia kwa tarakimu nyingi za binary kama ilivyobainishwa kwenye upande wa kulia wa operesheni. Kwa mfano, nambari 39 ya aina ya char imeandikwa kwa njia ya binary kama ifuatavyo: 00100111. Kisha:

Chara binaryMfano = 39; // 00100111 char result = binaryMfano<< 2; // сдвигаем 2 бита влево, результат: 10011100

Ikiwa kutofautiana ni aina isiyosajiliwa, basi matokeo yatakuwa nambari 156, kwa moja iliyosainiwa ni sawa na -100. Kumbuka kuwa kwa aina kamili zilizotiwa sahihi, kitengo katika sehemu muhimu zaidi ya uwakilishi biti ni ishara kwamba nambari ni hasi. Katika kesi hii, thamani katika fomu ya binary inayojumuisha yote inalingana na -1; ikiwa 1 iko tu katika tarakimu muhimu zaidi, na tarakimu zilizobaki ni zero, basi nambari hiyo ina thamani ya chini ya aina fulani: kwa char ni -128.

2. Aina ya sehemu ya kuelea (kuelea, mara mbili (kuelea))

Seti ya viwango vya kuelea ni sehemu ndogo ya nambari halisi, lakini sio kila nambari halisi inawakilishwa kwa fomu ya binary, ambayo wakati mwingine husababisha makosa ya kijinga:

Thamani ya kuelea = 0.2; thamani == 0.2; // kosa, thamani hapa haitakuwa sawa na 0.2.

Wakati wa kufanya kazi na vigeu vya sehemu zinazoelea, kipanga programu haipaswi kutumia jaribio la usawa au usawa; badala yake, jaribio la kuanguka ndani ya muda fulani kawaida hutumiwa:

Thamani - 0.2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

Mbali na shughuli za kulinganisha, aina ya sehemu inayoelea inasaidia shughuli 4 za hesabu ambazo zinalingana kikamilifu na shughuli za hisabati na nambari halisi.

3. Aina ya Boolean (mantiki) (bool)

Inajumuisha maadili mawili tu: kweli (kweli) na uongo (uongo). Kufanya kazi na vigezo vya aina hii, shughuli za mantiki hutumiwa:! (SIO), == (usawa), != (kutokuwa na usawa), && (mantiki NA), || (mantiki AU). Matokeo ya kila operesheni yanaweza kupatikana katika jedwali la ukweli linalolingana. Kwa mfano:

X Y XOR0 0 0 0 1 1 1 0 1 1 1 0

4. Aina ya herufi (char, wchar_t)

Aina ya char sio tu aina kamili (kawaida aina hii inaitwa byte), lakini pia aina ya tabia, kuhifadhi nambari ya tabia kutoka kwa meza kama tabia ya ASCII. Kwa mfano, msimbo 0x41 unalingana na herufi 'A', na 0x71 - 't'.

Wakati mwingine inakuwa muhimu kutumia herufi ambazo hazijawekwa kwenye meza za ASCII na kwa hivyo zinahitaji zaidi ya 1 byte kwa uhifadhi. Kuna herufi pana kwao (wchar_t).

5.1. Safu

Mipangilio inakuwezesha kuhifadhi seti ya mfululizo wa vipengele vya aina moja. Safu huhifadhiwa kwenye kumbukumbu kama kizuizi kinachounganishwa, kwa hivyo huwezi kutangaza safu bila kutaja saizi yake. Ili kutangaza safu, mabano ya mraba () yameandikwa baada ya jina la kutofautiana linaloonyesha ukubwa wake. Kwa mfano:

Int myArray; // Mkusanyiko wa vipengele 5 vya aina kamili

Ili kuanzisha safu, maadili yameorodheshwa katika brashi zilizopinda. Unaweza kuanzisha kwa njia hii tu wakati wa tamko tofauti. Kwa njia, katika kesi hii si lazima kutaja ukubwa wa safu:

Int odds = (1, 3, 7, 9, 11); // Safu imeanzishwa na maadili 5

Ili kufikia thamani maalum katika safu (kipengele cha safu), tumia operesheni ya kufikia index () inayoonyesha nambari ya kipengele (nambari zinaanzia 0). Kwa mfano:

Odds; // upatikanaji wa kipengele cha kwanza cha safu. Hurejesha thamani 1 odd; // upatikanaji wa kipengele cha tatu. Hurejesha thamani 7 odds = 13; // Weka thamani mpya kwa kipengele cha 5 cha odds za safu; // kosa la ufikiaji

5.3. Kamba

Kuandika kamba, waandaaji wa programu hutumia wazo kwamba kamba ni safu ya mfululizo (safu) ya wahusika. Ili kutambua mwisho wa mstari, tumia herufi maalum ya mwisho wa mstari: '\0'. Wahusika hawa maalum, unaojumuisha kurudi nyuma na mhusika anayetambulisha, huitwa herufi za kudhibiti au kutoroka. Pia kuna, kwa mfano, '\n' - mwanzo wa mstari mpya, '\t' - tabulation. Kuandika mshtuko wa nyuma kwenye mfuatano, kutoroka kunatumiwa - mkwaju mwingine umewekwa mbele ya ishara yenyewe: ‘\’. Kutoroka pia hutumiwa kuandika alama za kunukuu.

Wacha tuunde utofauti wa kamba:

Char textExample = ('T', 'e', ​​'s', 't', '\0'); // kamba "Mtihani" imeandikwa

Kuna nukuu iliyorahisishwa ya uanzishaji wa kamba:

Char textExample = "Jaribio"; // Herufi ya mwisho haijaandikwa, lakini saizi bado ni 5

Bila kuingia katika maelezo, hapa kuna aina nyingine muhimu ya data - kamba. Kamba
Aina hii inaweza, kwa mfano, kuongezwa:

Hodi ya kamba = "Habari,"; jina la kamba = "Max!"; string hello_name = hello + jina; // Pata kamba "Halo, Max!"

6. Kiungo

Int a = 2; // kutofautisha "a" kunaelekeza kwa thamani 2 int &b = a; // variable "b" inaelekeza mahali sawa na "a" b = 4; // kwa kubadilisha thamani ya b, programu hubadilisha thamani ya a. Sasa a = 4 int &c = 4; // kosa, huwezi kufanya hivi kwa sababu rejeleo haliwezi kupewa thamani

7. Index

Ili kuelewa aina hii ya data, unahitaji kukumbuka kuwa maadili mengi ya aina hii ni anwani za seli za kumbukumbu ambapo data huanza. Kielekezi pia kinaauni shughuli za kuongeza (+), kutoa (-) na kuacha kurejelea (*).

Anwani 0x0 inamaanisha kuwa pointer haina kitu, i.e. haielekezi data yoyote. Anwani hii ina yake halisi - NULL:

Int *nullPtr = NULL; // null pointer

Kuongeza na kutoa anwani yenye nambari kamili au anwani nyingine inaruhusu
songa kwenye kumbukumbu inayopatikana kwa programu.

Uendeshaji wa kurejesha data kuanzia kwenye anwani iliyohifadhiwa kwenye kielekezi huitwa dereferencing (*). Programu inasoma nambari inayotakiwa ya seli za kumbukumbu na inarudisha thamani iliyohifadhiwa kwenye kumbukumbu.

Int valueInMemory = 2; // weka kigezo cha aina kamili int *somePtr = // nakili anwani ya kigezo, hapa & - inarejesha anwani ya kigezo somePtr; // anwani ya seli ya kumbukumbu, kwa mfano, 0x2F *somePtr; // thamani imehifadhiwa katika seli 4: 0x2F, 0x30, 0x31 na 0x32

Operesheni ya mgawo, ambayo ni sawa kisintaksia na operesheni ya kunakili, haipatikani kwa viashiria. Kwa maneno mengine, unaweza kunakili anwani ya pointer nyingine au anwani ya kutofautisha, lakini huwezi kuamua thamani ya anwani mwenyewe.

Pointer yenyewe imehifadhiwa kwenye kumbukumbu, kama maadili ya anuwai ya aina zingine, na inachukua ka 4, kwa hivyo unaweza kuunda pointer kwa pointer.

8. Uhamisho

Hesabu ndiyo aina pekee ya msingi inayofafanuliwa na mtayarishaji programu. Kwa ujumla, hesabu ni seti iliyoamriwa ya viunga kamili vilivyopewa jina, huku jina la hesabu likiwa aina ya msingi.

rangi ya enum (RED, BLUE, GREEN);

Kwa chaguo-msingi, RED = 0, BLUE = 1, GREEN = 2. Kwa hiyo, maadili yanaweza kulinganishwa na kila mmoja, i.e. NYEKUNDU< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

Ufikiaji wa enum (SOMA = 1, ANDIKA = 2, EXEC = 4);

Mara nyingi ni rahisi kutumia hesabu ambazo maadili yake ni nguvu ya mbili, kwa sababu katika uwakilishi wa binary, nambari ambayo ni nguvu ya 2 itajumuisha 1 na sufuri. Kwa mfano:

8 10 = 00001000 2

Matokeo ya kuongeza nambari hizi pamoja kila wakati inaonyesha wazi ni nambari gani ziliongezwa:

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

Utupu

Kimsingi, aina ya utupu ni ya aina za kimsingi, lakini inaweza kutumika tu kama sehemu ya aina ngumu zaidi, kwa sababu. Hakuna vitu vya utupu wa aina. Kwa kawaida, aina hii hutumiwa kuonyesha kuwa chaguo za kukokotoa hazina thamani ya kurejesha au kama aina ya msingi ya kielekezi kwa vitu vya aina zisizobainishwa:

Kitu tupu; // kosa, hakuna vitu vya aina batili // kosa, hakuna marejeleo ya utupu *ptr; // sawa, hifadhi pointer kwa aina isiyojulikana

Mara nyingi tutatumia void haswa kuashiria kuwa chaguo la kukokotoa halirudishi thamani yoyote. Kielekezi cha aina batili kinatumika wakati kipanga programu kinachukua jukumu kamili la uadilifu wa kumbukumbu na utumaji sahihi wa aina.

Tuma

Mara nyingi ni muhimu kutupa thamani ya kutofautiana kwa aina moja hadi nyingine. Katika kesi ambapo seti ya maadili ya aina ya asili ni sehemu ndogo ya aina kubwa (kwa mfano, int ni sehemu ndogo ya muda mrefu na mrefu ni mara mbili), mkusanyaji anaweza bila uwazi ( kwa uwazi) badilisha aina ya thamani.

nambari kamili = 2; kuelea kuelea = integer; // inayoelea = 2.0

Utumaji wa aina ya nyuma utafanywa na upotezaji wa habari, kwa hivyo sehemu kamili tu ya nambari ya sehemu inayoelea itabaki, sehemu ya sehemu itapotea.

Kuna uwezekano wa ubadilishaji wa aina dhahiri; kwa hili, upande wa kushoto wa kigezo au thamani yoyote ya aina asilia, andika aina ambayo uigizaji utafanywa kwenye mabano:

Thamani ya int = (int) 2.5;

Operesheni za Unary na binary

Shughuli tulizofanya hapo awali zinaitwa binary: kushoto na kulia kwa ishara ya operesheni ni maadili au vigezo, kwa mfano, 2 + 3. Mbali na shughuli za binary, lugha za programu pia hutumia shughuli zisizo za kawaida zinazotumika kwa vigezo. . Zinaweza kupatikana ama upande wa kushoto au kulia wa kigezo; shughuli kadhaa kama hizo zimekabiliwa hapo awali - operesheni ya kuondoa marejeleo (*) na kuchukua anwani ya kigezo (&) sio ya kawaida. Waendeshaji "++" na "-" huongeza na kupunguza thamani ya kutofautiana kamili kwa 1, kwa mtiririko huo, na inaweza kuandikwa ama kushoto au kulia kwa kutofautiana.

C++ pia hutumia nukuu ya mkato kwa shughuli za mfumo wa jozi katika kesi wakati pande za kushoto na kulia za usemi zina viwezo sawa, i.e. Operesheni fulani inafanywa kwa thamani ya kutofautisha na matokeo ya operesheni huhifadhiwa kwa tofauti sawa:

A += 2; // sawa na a = a + 2; b /= 5; // sawa na b = b / 5; c &= 3; // sawa na c = c & 3;