Tofauti ya aina ya char katika C. Aina za data katika lugha C. Inaweza kutofautiana katika kumbukumbu ya kompyuta

Sehemu hii itajadili aina kuu za data katika C++; aina hizi za data pia huitwa kujengwa ndani. Lugha ya programu ya C++ ni lugha ya programu inayoweza kupanuliwa. Neno extensible linamaanisha kuwa pamoja na aina za data zilizojengewa ndani, unaweza kuunda aina zako za data. Ndiyo maana kuna idadi kubwa ya aina za data katika C++. Tutasoma zile kuu tu.

Jedwali 1 - aina za data za C++
Aina kwaheri Msururu wa thamani zinazokubalika

aina ya data kamili (Boolean).

bool 1 0 / 255

aina ya data kamili (tabia).

char 1 0 / 255

aina kamili za data

int fupi 2 -32 768 / 32 767
int fupi isiyotiwa saini 2 0 / 65 535
int 4
int isiyotiwa saini 4 0 / 4 294 967 295
int ndefu 4 -2 147 483 648 / 2 147 483 647
bila saini int ndefu 4 0 / 4 294 967 295

aina za data za sehemu zinazoelea

kuelea 4 -2 147 483 648.0 / 2 147 483 647.0
kuelea kwa muda mrefu 8
mara mbili 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

Jedwali la 1 linaonyesha aina kuu za data katika C++. Jedwali zima limegawanywa katika safu tatu. Safu ya kwanza inaonyesha neno lililohifadhiwa, ambayo itaamua, kila moja yake, aina ya data. Safu ya pili inaonyesha idadi ya baiti zilizotengwa kwa kigezo na aina ya data inayolingana. Safu wima ya tatu inaonyesha masafa maadili yanayokubalika. Tafadhali kumbuka kuwa katika jedwali aina zote za data zimepangwa kutoka ndogo hadi kubwa zaidi.

aina ya data ya bool

Ya kwanza kwenye jedwali ni aina ya data ya bool aina kamili ya data, kwani anuwai ya maadili halali ni nambari kutoka 0 hadi 255. Lakini kama vile umegundua, kwenye mabano inasema aina ya data ya kimantiki, na hii pia ni kweli. Kwa sababu bool kutumika kwa kipekee kuhifadhi matokeo ya misemo ya Boolean. Usemi wa Boolean unaweza kuwa na moja ya matokeo mawili: kweli au si kweli. kweli - ikiwa kujieleza kwa mantiki kweli, uongo - ikiwa usemi wa kimantiki ni wa uwongo.

Lakini kwa kuwa anuwai ya maadili halali ya aina ya data ya bool ni kutoka 0 hadi 255, ilikuwa ni lazima kwa njia fulani kulinganisha safu hii na viwango vya kimantiki vya kweli na vya uwongo vilivyofafanuliwa katika lugha ya programu. Kwa hivyo, ukweli wa mara kwa mara ni sawa na nambari zote kutoka 1 hadi 255 zikiwa zimejumuishwa, wakati uwongo wa mara kwa mara ni sawa na nambari moja tu - 0. Fikiria mpango unaotumia aina ya data ya bool.

// data_type.cpp: Inafafanua mahali pa kuingilia kwa programu ya kiweko. #pamoja na "stdafx.h" #pamoja na kutumia nafasi ya majina std; int main(int argc, char* argv) ( bool boolean = 25; // aina tofauti bool yenye jina boolean ikiwa (boolean) // sharti la if statement cout<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

KATIKA mstari wa 9utofauti wa aina umetangazwa bool , ambayo imeanzishwa hadi 25. Kinadharia, baada yamistari 9, katika kigezo cha boolean inapaswa kuwa na nambari 25, lakini kwa kweli kigeu hiki kina nambari 1. Kama nilivyosema, nambari 0 ni dhamana ya uwongo, nambari 1 ni dhamana ya kweli. Jambo ni kwamba katika variable kama bool inaweza kuwa na maadili mawili - 0 (uongo) au 1 (kweli). Ambapo chini ya aina ya data bool byte nzima imetengwa, ambayo ina maana kwamba kutofautiana kwa aina bool inaweza kuwa na nambari kutoka 0 hadi 255. Kuamua maadili ya uwongo na ya kweli, maadili mawili tu 0 na 1 yanahitajika. Swali linatokea: "Thamani zingine 253 ni za nini?"

Kwa kuzingatia hali hii, tulikubali kutumia nambari kutoka 2 hadi 255 sawa na nambari 1, ambayo ni ukweli. Hii ndio hasa sababu tofauti ya boolean ina nambari 25 na sio 1. In mistari 10 -13 iliyotangazwa, ambayo huhamisha udhibiti kwa opereta katika mstari wa 11, ikiwa hali ni kweli, na opereta ndani mstari wa 13, ikiwa hali ni ya uwongo. Matokeo ya programu yanaonyeshwa kwenye Mchoro 1.

Kweli = 1 Ili kuendelea, bonyeza kitufe chochote. . .

Kielelezo 1 - aina ya data ya bool

Chapa ya aina ya data

Aina ya data char ni aina ya data kamili ambayo hutumiwa kuwakilisha wahusika. Hiyo ni, kila herufi inalingana na nambari fulani kutoka kwa safu. Aina ya data ya char pia inaitwa aina ya data ya mhusika, kwani uwakilishi wa picha wa wahusika katika C ++ inawezekana shukrani kwa char. Ili kuwakilisha wahusika katika C ++, aina ya data ya char imetengwa byte moja, byte moja ina bits 8, kisha tunainua mbili kwa nguvu ya 8 na kupata thamani 256 - idadi ya wahusika ambao wanaweza kusimba. Kwa hivyo, kwa kutumia aina ya data ya char, unaweza kuonyesha yoyote kati ya herufi 256. Vibambo vyote vilivyosimbwa vinawakilishwa katika .

ASCII (kutoka Kiingereza Standard Code for Information Interchange) - Msimbo wa kawaida wa Marekani wa kubadilishana habari.

Fikiria mpango unaotumia aina ya data ya char.

// symbols.cpp: Inafafanua mahali pa kuingilia kwa programu ya kiweko. #pamoja na "stdafx.h" #pamoja na kutumia nafasi ya majina std; int main(int argc, char* argv) ( alama ya char = "a"; // tamko tofauti chapa chapa na kuianzisha na ishara "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

Kwa hiyo, katika mstari wa 9variable jina ishara , imepewa thamani ya ishara"a" ( Nambari ya ASCII) KATIKA mstari wa 10 mwendeshaji wa cout huchapisha herufi iliyo katika kigezo ishara KATIKA mstari wa 11alitangaza safu ya kamba yenye jina kamba , na saizi ya safu imebainishwa kabisa. Kamba huhifadhiwa katika safu ya safu"tovuti" . Tafadhali kumbuka kuwa tulipohifadhi ishara kuwa kama kigezo char , kisha baada ya ishara sawa tunaweka nukuu moja ambayo tuliandika ishara. Wakati wa kuanzisha safu ya kamba na kamba fulani, nukuu mbili huwekwa baada ya ishara sawa, ambayo kamba fulani imeandikwa. Kama herufi ya kawaida, kamba hutolewa kwa kutumia opereta koti, mstari wa 12. Matokeo ya programu yanaonyeshwa kwenye Mchoro 2.

Alama = kamba = tovuti Ili kuendelea, bonyeza kitufe chochote. . .

Kielelezo 2 - aina ya data char

Aina za data kamili

Aina kamili za data hutumiwa kuwakilisha nambari. Kuna sita kati yao katika Jedwali la 1: int fupi, int fupi isiyotiwa saini, int, int isiyotiwa saini, int ndefu, int ndefu isiyotiwa saini. . Wote wana ukubwa wao wa kumbukumbu na anuwai ya maadili yanayokubalika. Kulingana na mkusanyaji, saizi ya kumbukumbu iliyochukuliwa na anuwai ya maadili yanayokubalika yanaweza kutofautiana. Katika Jedwali la 1, safu zote za maadili na saizi zinazokubalika za kumbukumbu iliyochukuliwa huchukuliwa kwa mkusanyaji wa MVS2010. Zaidi ya hayo, aina zote za data katika Jedwali 1 zimepangwa kwa mpangilio unaoongezeka wa saizi ya kumbukumbu iliyochukuliwa na anuwai ya maadili yanayokubalika. Upeo wa maadili yaliyokubaliwa, kwa njia moja au nyingine, inategemea ukubwa wa kumbukumbu iliyochukuliwa. Ipasavyo, ukubwa wa kumbukumbu iliyochukuliwa, ndivyo anuwai ya maadili yanayokubalika inavyoongezeka. Pia, anuwai ya thamani zinazokubalika hubadilika ikiwa aina ya data itatangazwa na kiambishi awali ambacho hakijatiwa saini. Kiambishi awali ambacho hakijatiwa saini kinamaanisha kuwa aina ya data haiwezi kuhifadhi maadili yaliyosainiwa, basi anuwai ya maadili chanya huongezeka maradufu, kwa mfano, aina fupi za data za int na ambazo hazijasajiliwa.

Viambishi awali vya aina ya data kamili:

mfupi kiambishi awali kinafupisha aina ya data ambayo inatumiwa kwa kupunguza ukubwa wa kumbukumbu ambayo inachukua;

ndefu kiambishi awali kinapanua aina ya data ambayo inatumiwa kwa kuongeza ukubwa wa kumbukumbu ambayo inachukua;

haijatiwa saini-kiambishi awali huongeza maradufu anuwai ya thamani chanya, ilhali anuwai ya thamani hasi haiwezi kuhifadhiwa katika aina hii ya data.

Kwa hivyo, kimsingi, tuna aina moja kamili ya kuwakilisha nambari kamili: aina ya data ya int. Shukrani kwa viambishi vifupi, virefu, visivyo na saini, aina fulani ya aina za data za int huonekana, tofauti na saizi ya kumbukumbu iliyochukuliwa na (au) anuwai ya maadili yanayokubalika.

Aina za Data za Pointi zinazoelea

Kuna aina mbili za data ya sehemu ya kuelea katika C++: kuelea na mara mbili. Aina za data za sehemu zinazoelea zimeundwa kuhifadhi nambari za sehemu zinazoelea. Aina za data za kuelea na mbili zinaweza kuhifadhi nambari chanya na hasi za sehemu zinazoelea. Aina ya data ya kuelea ina nusu ya kumbukumbu ya aina ya data mbili, ambayo inamaanisha kuwa anuwai ya maadili yanayokubalika pia ni ndogo. Ikiwa aina ya data ya kuelea imetangazwa na kiambishi awali kirefu, basi anuwai ya maadili yanayokubalika yatakuwa sawa na anuwai ya maadili yanayokubalika ya aina mbili za data. Kimsingi, aina za data za sehemu zinazoelea zinahitajika ili kutatua matatizo kwa usahihi wa juu wa hesabu, kama vile miamala ya pesa.

Kwa hiyo, tumeangalia pointi kuu kuhusu aina kuu za data katika C ++. Kilichobaki ni kuonyesha ni wapi safu hizi zote za maadili zinazokubalika na saizi za kumbukumbu iliyochukuliwa hutoka. Na kwa hili tutaendeleza programu ambayo itahesabu sifa kuu za aina zote za data zilizojadiliwa hapo juu.

// data_types.cpp: Inafafanua mahali pa kuingilia kwa programu ya kiweko. #pamoja na "stdafx.h" #pamoja na // Maktaba ya ghiliba ya I/O #pamoja na // faili ya kichwa cha kazi za hisabati #include kutumia nafasi ya majina std; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // vichwa vya safuwima <<"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; system("pause"); return 0; }

Mpango huu umechapishwa ili uweze kuona sifa za aina za data katika mfumo wako. Hakuna haja ya kuelewa msimbo, kwani programu hutumia taarifa za udhibiti ambazo uwezekano mkubwa haujazifahamu. Kwa kufahamiana kwa juu juu na nambari ya programu, nitaelezea vidokezo kadhaa hapa chini. Opereta saizi() Huhesabu idadi ya baiti zilizotengwa kwa aina ya data au kigezo. Kazi pow(x,y) huinua maana x kwa nguvu ya y , kipengele hiki kinapatikana kutoka kwa faili ya kichwa . fasta na setprecision() vidanganyifu inapatikana kutoka kwa faili ya kichwa . Ya kwanza ni fasta , hupitisha maadili katika fomu maalum kwa mtiririko wa pato. Kidhibiti setprecision(n) maonyesho n maeneo ya desimali. Thamani ya juu ya aina fulani ya data huhesabiwa kwa kutumia fomula ifuatayo:

Max_val_type = 2^(b * 8 - 1) - 1; // kwa aina za data zilizo na nambari hasi na chanya // ambapo b ni idadi ya ka zilizotengwa kwenye kumbukumbu kwa kutofautisha na aina hii ya data // zidisha na 8, kwani kuna biti 8 katika byte moja // toa 1 kwenye mabano, kwa kuwa nambari za masafa lazima zigawanywe mara mbili kwa thamani chanya na hasi \/ toa 1 mwishoni, kwani anuwai ya nambari huanza kutoka kwa sifuri // aina za data na kiambishi awali kisichotiwa saini max_val_type = 2^(b * 8) - 1; // kwa aina za data zilizo na nambari chanya tu // maelezo ya fomula ni sawa, kitengo pekee hakijatolewa kutoka kwa mabano.

Mfano wa jinsi programu inavyofanya kazi inaweza kuonekana kwenye Mchoro 3. Safu ya kwanza inaonyesha aina kuu za data katika C ++, safu ya pili inaonyesha ukubwa wa kumbukumbu iliyotengwa kwa kila aina ya data, na safu ya tatu inaonyesha thamani ya juu ambayo sambamba. aina ya data inaweza kuwa na. Thamani ya chini hupatikana sawa na kiwango cha juu. Kwa aina za data zilizo na kiambishi awali ambacho hakijatiwa saini, thamani ya chini ni 0.

Aina ya data ya baiti max thamani bool = 1 255.00 char = 1 255.00 int fupi = 2 32767.00 int fupi isiyotiwa saini = 2 65535.00 int = 4 2147483647.00 int isiyotiwa saini = 4 4294 int 4294 = 4 4294 = 4 4294 = 4 4294 4294. 0 int ndefu isiyotiwa saini = 4 4294967295.00 kuelea = 4 2147483647.00 mara mbili = 8 9223372036854775808.00 Ili kuendelea, bonyeza kitufe chochote. . .

Kielelezo 3 - aina za data za C++

Ikiwa, kwa mfano, kutofautiana kwa aina fupi int imepewa thamani 33000, basi gridi ya bit itazidi, kwa kuwa thamani ya juu katika kutofautiana kwa aina ya int short ni 32767. Hiyo ni, thamani nyingine itahifadhiwa katika kutofautiana. ya aina fupi int, uwezekano mkubwa itakuwa hasi. Kwa kuwa tumegusa aina ya data ya int, ni muhimu kuzingatia kwamba unaweza kuacha neno kuu la int na kuandika, kwa mfano, mfupi tu. Mkusanyaji atatafsiri kiingilio kama hicho kama kifupi int . Vile vile hutumika kwa viambishi awali virefu na visivyo na saini. Kwa mfano:

// shorthand ya aina ya data int short a1; // sawa na int fupi a1; // sawa na muda mrefu ambao haujasainiwa a1; // sawa na int ambayo haijasainiwa fupi a1; // sawa na int fupi isiyotiwa saini

Lebo: Aina za data za C++, otomatiki, decltype, uelekezaji wa aina otomatiki

Aina za data

Kama ilivyo kwa C, vigeuzo katika C++ lazima viwe na jina halali. Hiyo ni, inajumuisha nambari, herufi na kusisitiza, haipaswi kuanza na nambari na haipaswi sanjari na maneno ya kazi, ambayo sasa kuna zaidi.

alignas alignof na na_eq
asm kiotomatiki bitand bitor
bool mapumziko kesi kukamata
char sura16_t sura32_t darasa
kulazimishaconstconstexprconst_cast
endeleadecltypechaguo-msingikufuta
fanya mara mbili dynamic_cast mwingine
enumwazikuuza njenje
uongokueleakwarafiki
enda kwakamakatika mstariint
ndefuinayoweza kubadilikanafasi ya majinampya
isipokuwa sivyo si_eq nullptr
mwendeshajiauau_eqPrivat
kulindwaummakujiandikishareinterpret_cast
kurudimfupisainiukubwa wa
tulikudai_tulituli_kutupwamuundo
kubadilikiolezohiithread_ndani
kutupakwelijaributypedef
iliyoandikwaaina ya jinamuunganohaijatiwa saini
kutumiamtandaoniutuputete
wchar_twakatixorxor_eq

Kama C, C++ ni lugha nyeti.

Aina za Takwimu za Msingi

Aina za data za msingi katika C++ zinaweza kugawanywa katika vikundi kadhaa

Aina ya ishara. Vigezo vya aina vilivyotiwa sahihi vinaweza kutumika kuhifadhi herufi moja. Aina rahisi zaidi ni char, ambayo ni 1 byte kwa ukubwa. Pia kuna aina za kuwakilisha herufi kubwa kuliko baiti moja

Kwa kweli, aina hizi zipo katika C pia; hatukukaa kwa undani juu ya kusoma uwakilishi wa kamba.

Aina za data kamili. Kama ilivyo kwa C, wanaweza kuwa na virekebishaji vilivyotiwa saini na ambavyo havijasainiwa. Kama ilivyo kwa C, aina kuu ni char, int, ndefu na ndefu. Hakuna jipya limeonekana hapa.

Nambari za uhakika zinazoelea. Inawakilishwa na aina mbili za kuelea, mbili na ndefu. Hakuna jipya ukilinganisha na C.

Aina zote zilizoelezwa hapo juu pia huitwa hesabu. Mbali nao, pia kuna aina tupu - batili (pia hakuna kitu kipya ikilinganishwa na C) na pointer isiyofaa. Sasa, badala ya NULL na sifa zake za kushangaza, kuna aina mpya ya kimsingi ya nullptr_t iliyo na nullptr ya thamani moja, ambayo huhifadhi kielekezi kisicho na ni sawa nayo yenyewe. Wakati huo huo, inaweza kutupwa kwa pointer isiyofaa ya aina inayotaka.

Aina ya Boolean ilianzishwa katika C++. Inahifadhi maadili mawili tu yanayowezekana, ya kweli na ya uwongo.

C++ pia inasaidia aina nyingi za data za mchanganyiko, ambazo zitajadiliwa baadaye.

Kutangaza na kuanzisha vigezo

Katika C++, viambajengo vinaweza kutangazwa mahali popote ndani ya chaguo za kukokotoa, si tu mwanzoni mwa kizuizi cha msimbo. Vigeuzo vinaweza pia kutangazwa ndani ya a kwa kitanzi.

Kuelea a; kuelea b; kuelea jumla; hatua ya kuelea; a = 3.0f; b = 4.3f; jumla = 0.0f; hatua = 0.05f; kwa (elea i = a; i< b; i += step) { sum += i * i; } float mid = sum / (b - a) / step;

Unaweza kuanzisha vigeuzo wakati wa uundaji kama vile C

Int x = 0;

au, kwa kutumia mjenzi

Int x(0); mara mbili d (3.2);

Kwa kuongeza, katika C ++ 2011 kinachojulikana uanzishaji sawa, uanzishaji wa ulimwengu wote ambao hukuruhusu kutumia sintaksia moja kuanzisha vitu vyovyote

Pointi ya Muundo ( int x; int y; ); struct Nafasi ya uhakika = ( 3, 4); Pointi *pt = Pointi mpya (6, 8); urefu wa int(5);

Ufafanuzi wa aina

Katika C++ 2011, neno la huduma auto linatumiwa kuamua kiotomati aina ya vigezo. Mara nyingi aina ya kutofautisha inaweza kuamua kulingana na upande wa kulia wa uanzishaji. Katika kesi ambapo mkusanyaji anaweza kuamua aina bila shaka, inaweza kutajwa kwa kutumia neno la kazi ya kiotomatiki:

Otomatiki x = 3; //sawa na int x = 3; hatua otomatiki = Pointi mpya; //sawa na Point *point = Pointi mpya

Kwa kuongeza, inawezekana kuweka aina ya kutofautiana kulingana na aina iliyopo, kwa kutumia neno la huduma decltype

Int intX = 42; decltype(intX) intY = 33; //sawa na intY = 33; otomatiki pt1 = Pointi mpya; decltype(pt1) p2 = Pointi mpya(2, 6); //sawa na //Point *pt1 = Pointi mpya; //Pointi *pt2 = Pointi mpya(2, 6)

Kamba

C++ haina mfuatano wa aina ya msingi. Walakini, kuna maktaba ya kawaida inayoitwa kamba, ambayo hutoa darasa la kufanya kazi na kamba.

#pamoja na #pamoja na void main() ( std::string first_name = "Vasya"; std::string last_name = ( "Pupkin" ); //string concatenation auto full_name = first_name + " " + last_name; std::string *department = new std ::string("Idara ya kunakili na kuchanganua"); std::cout<< full_name << std::endl; //сравнение строк std::string a = "A"; std::string b = "B"; if (first_name.compare(last_name) >0) ( std::cout<< a + " >" + b<< std::endl; } else { std::cout << a + " < " + b << std::endl; } //подстрока std::string subs = department->sehemu ndogo (0, 10); std::cout<< subs << std::endl; //замена подстроки std::cout << last_name.replace(0, 1, "G") << std::endl; //вставка std::string new_department = department->kuingiza(idara->urefu(), " na kupasua"); std::cout<< new_department << std::endl; delete department; system("pause"); }

Tutafahamu maktaba ya kamba ya kawaida kwa undani zaidi baadaye.

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). Kiwango cha thamani za kikomo kwa hiyo kinaweza 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. Kwa 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, ukubwa wa aina ndefu lazima iwe chini ya ukubwa wa aina ya int, na ukubwa wa aina ya int haipaswi kuwa chini ya ukubwa wa aina fupi, na ukubwa wa aina mbili ndefu lazima. kuwa zaidi ya 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() ( nambari 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 kwa kutumia 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 kufasiriwa 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.

Vigezo hutumiwa kuhifadhi data mbalimbali katika lugha za programu. Tofauti ni eneo la kumbukumbu ambalo lina jina, vinginevyo huitwa kitambulisho.

Kwa kutoa jina la kutofautisha, mpangaji programu wakati huo huo anataja eneo la kumbukumbu ambapo maadili ya kutofautisha yataandikwa kwa uhifadhi.

Ni mtindo mzuri kutaja vigeu kwa maana. Inaruhusiwa kutumia herufi ndogo na kubwa, nambari na chini, ambayo inachukuliwa kuwa herufi katika C. Herufi ya kwanza lazima iwe herufi, na kusiwe na nafasi katika jina la kutofautisha. Katika matoleo ya kisasa ya watunzi, urefu wa jina hauna kikomo. Jina la mabadiliko haliwezi kulingana na maneno muhimu yaliyohifadhiwa. Herufi kubwa na ndogo katika majina ya kutofautiana ni tofauti, vigezo a Na A- vigezo tofauti.

Maneno Muhimu Yaliyohifadhiwa otomatiki mara mbili int muundo kuvunja mwingine swichi ndefu rejista tupedef char extern kurudi batili kesi ya kuelea ambayo haijatiwa saini chaguomsingi kwa muungano uliotiwa saini fanya ikiwa ukubwa wa tete endelea enum muda mfupi
Katika C, vigezo vyote lazima vitangaze. Hii ina maana kwamba, kwanza, mwanzoni mwa kila programu au kazi lazima utoe orodha ya vigezo vyote vilivyotumiwa, na pili, onyesha aina ya kila mmoja wao.

Tofauti inapotangazwa, mkusanyaji hutenga nafasi ya kumbukumbu kwa ajili yake kulingana na aina yake. Kwa kutumia zana za kawaida za AVR GCC, inafanya kazi na aina za data char(aina ya wahusika) na int(aina kamili).

Aina zinazobadilika

Chapa char

char- ni aina ya kiuchumi zaidi. Aina ya herufi inaweza kutiwa saini au kubatilishwa saini. Imetajwa ipasavyo kama " char iliyotiwa saini"(aina iliyosainiwa) na" char ambayo haijasainiwa" (aina isiyotiwa saini). Aina iliyotiwa saini inaweza kuhifadhi thamani katika safu kutoka -128 hadi +127. Haijasainiwa - kutoka 0 hadi 255. Tofauti ya char ina kumbukumbu 1 (biti 8).

Maneno muhimu (virekebishaji) saini Na haijatiwa saini onyesha jinsi sifuri kidogo ya kutofautisha iliyotangazwa inavyofasiriwa, yaani, ikiwa neno kuu lisilo na saini limebainishwa, basi biti sifuri inafasiriwa kama sehemu ya nambari, vinginevyo biti ya sifuri inatafsiriwa kama saini.

Andika int

Thamani kamili int Labda mfupi(fupi) au ndefu(muda mrefu).

Neno muhimu (kirekebishaji) mfupi kuwekwa baada ya maneno muhimu saini au haijatiwa saini. Kwa hivyo, aina zifuatazo zinajulikana: int fupi iliyotiwa saini, int fupi isiyotiwa saini, int ndefu iliyotiwa sahihi, int ndefu isiyotiwa saini.

Tofauti ya aina saini int fupi(nambari fupi iliyosainiwa) inaweza kuchukua maadili kutoka -32768 hadi +32767, int fupi isiyotiwa saini(unsigned short integer) - kutoka 0 hadi 65535. Hasa byte mbili za kumbukumbu (bits 16) zimetengwa kwa kila mmoja wao.

Wakati wa kutangaza aina tofauti saini int fupi maneno muhimu saini Na mfupi inaweza kuachwa, na aina hiyo ya kutofautisha inaweza kutangazwa kwa urahisi int. Inawezekana pia kutangaza aina hii kwa neno moja muhimu mfupi.

Inaweza kubadilika int fupi isiyotiwa saini inaweza kutangazwa kama int isiyotiwa saini au fupi isiyotiwa saini.

Kwa kila saizi saini int ndefu au bila saini int ndefu Biti 4 za kumbukumbu zimetengwa (biti 32). Thamani za anuwai za aina hii zinaweza kuwa katika safu kutoka -2147483648 hadi 2147483647 na kutoka 0 hadi 4294967295, mtawaliwa.

Pia kuna vigezo kama muda mrefu int, ambayo ka 8 za kumbukumbu zimetengwa (bits 64). Wanaweza pia kusainiwa au kubatilishwa. Kwa aina iliyosainiwa, anuwai ya maadili ni kutoka -9223372036854775808 hadi 9223372036854775807, kwa aina ambayo haijasainiwa - kutoka 0 hadi 18446744073709551615. Aina iliyosainiwa inaweza kutangazwa kwa maneno mawili muhimu kwa urahisi. ndefu ndefu.

Aina Masafa Masafa ya hex Ukubwa
char ambayo haijasainiwa 0 ... 255 0x00...0xFF 8 kidogo
char iliyotiwa saini
au kwa urahisi
char
-128 ... 127 -0x80...0x7F 8 kidogo
int fupi isiyotiwa saini
au kwa urahisi
int isiyotiwa saini au fupi isiyotiwa saini
0 ... 65535 0x0000 ... 0xFFFF 16 kidogo
saini int fupi au saini int
au kwa urahisi
mfupi au int
-32768 ... 32767 0x8000...0x7FFF 16 kidogo
bila saini int ndefu
au kwa urahisi
bila kusainiwa kwa muda mrefu
0 ... 4294967295 0x00000000 ... 0xFFFFFFFF 32 kidogo
saini kwa muda mrefu
au kwa urahisi
ndefu
-2147483648 ... 2147483647 0x80000000 ... 0x7FFFFFFF 32 kidogo
bila kusainiwa kwa muda mrefu 0 ... 18446744073709551615 0x0000000000000000 ... 0xFFFFFFFFFFFFFFFFFF 64 kidogo
saini kwa muda mrefu
au kwa urahisi
ndefu ndefu
-9223372036854775808 ... 9223372036854775807 0x8000000000000000 ... 0x7FFFFFFFFFFFFFFFFFF 64 kidogo

Vigezo vinatangazwa katika taarifa ya tamko. Taarifa ya tamko ina aina ya vipimo na orodha iliyotenganishwa kwa koma ya majina tofauti. Lazima kuwe na semicolon mwishoni.

Tamko tofauti lina umbizo lifuatalo:

[modifiers] aina_specifier kitambulisho [, kitambulisho] ...

Virekebishaji- maneno muhimu saini, haijatiwa saini, mfupi, ndefu.
Aina ya kibainishi- neno kuu char au int, ambayo huamua aina ya tofauti iliyotangazwa.
Kitambulisho- jina la kutofautiana.

Mfano: char x; int a, b, c; bila saini ndefu ndefu y;
Kwa njia hii vigezo vitatangazwa x, a, b, c, y. Kwa kutofautiana x itawezekana kuandika maadili kutoka -128 hadi 127. Katika vigezo a, b, c- kutoka -32768 hadi +32767. Kwa kutofautiana y- kutoka 0 hadi 18446744073709551615.

Kuanzisha thamani ya tofauti juu ya tamko

Inapotangazwa, kigezo kinaweza kuanzishwa, yaani, kupewa thamani ya awali. Unaweza kufanya hivi kama ifuatavyo. int x = 100; Hivyo, katika kutofautiana x Ikitangazwa, nambari 100 itaandikwa mara moja.

Ni bora kuzuia kuchanganya vigeu vilivyoanzishwa katika taarifa moja ya tamko, ambayo ni, ni bora kutangaza vigeu vilivyoanzishwa kwenye mistari tofauti.

Mara kwa mara

Tofauti ya aina yoyote inaweza kutangazwa kuwa haiwezi kubadilishwa. Hii inafanikiwa kwa kuongeza neno kuu const kwa kiashiria cha aina. Vigezo vilivyo na aina const ni data ya kusoma tu, kumaanisha kuwa kigezo hakiwezi kupewa thamani mpya. Ikiwa baada ya neno const Ikiwa hakuna kibainishi cha aina, basi vidhibiti vinachukuliwa kama maadili yaliyosainiwa na hupewa aina int au int ndefu kulingana na thamani ya mara kwa mara: ikiwa mara kwa mara ni chini ya 32768, basi inapewa aina int, vinginevyo int ndefu.

Mfano: const long int k = 25; const m = -50; // inadokezwa const int m=-50 const n = 100000; // ilimaanisha const long int n=100000

Mgawo

Alama ya "=" inatumika kwa kazi katika C. Usemi wa kulia wa ishara ya mgawo unatathminiwa, na thamani inayotokana imepewa kigeugeu kilicho upande wa kushoto wa ishara ya mgawo. Katika kesi hii, thamani ya awali iliyohifadhiwa katika kutofautiana inafutwa na kubadilishwa na mpya.

Opereta "=" haipaswi kueleweka kama usawa.
Kwa mfano, usemi a = 5; inapaswa kusomwa kama "gawia kutofautisha a hadi 5".

Mifano: x = 5 + 3; // ongeza maadili 5 na 3, // toa matokeo kwa kutofautisha x (andika kwa kutofautisha x) b = a + 4; // ongeza 4 kwa thamani iliyohifadhiwa katika kutofautisha a, // toa matokeo yanayotokana na kutofautisha b (andika kwa kutofautisha b) b = b + 2; // ongeza 2 kwa thamani iliyohifadhiwa katika kutofautisha b, // toa matokeo yanayotokana na kutofautisha b (andika kwa kutofautisha b)
Kwa upande wa kulia, thamani ya kutofautiana inaweza kutumika mara kadhaa: c = b * b + 3 * b;

Mfano: x = 3; // variable x itapewa thamani 3 y = x + 5; // nambari 5 itaongezwa kwa thamani iliyohifadhiwa katika utofauti wa x, // matokeo yake yataandikwa kwa utofauti wa y. z = x * y; // maadili ya vigeu vya x na y yatazidishwa, // matokeo yataandikwa kwa kutofautisha z z = z - 1; // 1 itatolewa kutoka kwa thamani iliyohifadhiwa katika utofauti wa z // matokeo yataandikwa kwa utofauti wa z
Hivyo, katika kutofautiana z nambari 23 itahifadhiwa

Kwa kuongeza opereta rahisi ya mgawo "=", kuna waendeshaji wengine kadhaa waliojumuishwa katika C: "+=", "-=", "*=
Mifano: x += y; // sawa na x = x + y; - ongeza x na y // na uandike matokeo kwa kutofautisha x x -=y; // sawa na x = x - y; - toa thamani y kutoka kwa x // na uandike matokeo kwa mabadiliko ya x x *=y; // sawa na x = x * y; - zidisha x kwa y // na uandike matokeo kwa mabadiliko ya x x /=y; // sawa na x = x / y; - kugawanya x kwa y // na kuandika matokeo kwa variable x x %=y; // sawa na x = x % y; // hesabu salio kamili wakati wa kugawanya x kwa y // na uandike matokeo kwa mabadiliko ya x

Kuongezeka na kupungua

Ikiwa unahitaji kubadilisha thamani ya kutofautisha hadi 1, basi tumia ongezeko au kupungua.

Ongezeko- utendakazi wa kuongeza thamani iliyohifadhiwa katika kigezo kwa 1.

Mfano: x++; // thamani ya mabadiliko x itaongezwa kwa 1$WinAVR = ($_GET["avr"]); if($WinAVR) ni pamoja na($WinAVR);?>
Kupungua- utendakazi wa kupunguza thamani iliyohifadhiwa katika kigezo kwa 1.

Mfano: x--; // thamani ya mabadiliko x itapungua kwa 1
Ongezeko na kupunguza ni waendeshaji kazi. Unapotumia punguzo na nyongeza pamoja na opereta mgawo "=", tumia nukuu ya postfix (x++) au kiambishi awali (++x). Ingizo la kiambishi awali linatekelezwa kwanza.

Mifano: y = x++;
Wacha tufikirie kuwa katika kutofautisha x thamani 5 ilihifadhiwa. Kisha ndani y thamani 5 itaandikwa, baada ya hapo thamani ya kutofautiana x itaongezeka kwa 1. Hivyo, katika y itakuwa 5, na ndani x- 6. y = --x;
Ikiwa ndani x Ikiwa thamani ya 5 ilihifadhiwa, basi kupungua kutafanywa kwanza x hadi 4 na kisha thamani hii itatolewa kwa kutofautisha y. Hivyo, x Na y atapewa thamani 4.

Katika somo hili utajifunza C++ alfabeti ya lugha, na pia nini aina za data programu inaweza kuichakata. Huu unaweza usiwe wakati wa kusisimua zaidi, lakini ujuzi huu ni muhimu!Kwa kuongeza, unapoanza kujifunza lugha nyingine yoyote ya programu, utapitia hatua sawa ya kujifunza kwa ujasiri zaidi. Programu ya C++ inaweza kuwa na alama zifuatazo:

  • herufi kubwa, ndogo za Kilatini A, B, C..., x, y, z na underscore;
  • Nambari za Kiarabu kutoka 0 hadi 9;
  • wahusika maalum: ( ) , | , () + - / % * . \':?< > = ! & # ~ ; ^
  • nafasi, kichupo, na herufi mpya.

Katika upimaji wa programu unaweza kutumia maoni. Ikiwa maandishi yana herufi mbili za kufyeka mbele // na kuishia na herufi mpya au imefungwa kati ya herufi /* na */, basi mkusanyaji huipuuza.

Data katika C++

Ili kutatua tatizo, programu yoyote huchakata baadhi ya data. Wanaweza kuwa wa aina mbalimbali: integers na idadi halisi, wahusika, masharti, safu. Katika C++, data kawaida huelezewa mwanzoni mwa chaguo la kukokotoa. KWA aina za data za msingi lugha ni pamoja na:

Kuzalisha aina nyingine za data, msingi na kinachojulikana vibainishi. C++ inafafanua vibainishi vinne vya aina ya data:

  • mfupi - mfupi;
  • muda mrefu - mrefu;
  • saini - saini;
  • haijatiwa saini - haijatiwa saini.

Aina kamili

Tofauti ya aina int kwenye kumbukumbu ya kompyuta inaweza kuchukua baiti 2 au 4. Inategemea saizi ya biti ya processor. Kwa chaguo-msingi, aina zote kamili huzingatiwa kuwa zimetiwa saini, yaani, kibainishi saini inaweza isibainishwe. Kielezi haijatiwa saini hukuruhusu kuwakilisha nambari chanya pekee. Ifuatayo ni baadhi ya safu za thamani za aina kamili

Aina Masafa Ukubwa
int -2147483648…2147483647 4 baiti
int isiyotiwa saini 0…4294967295 4 baiti
saini int -2147483648…2147483647 4 baiti
int fupi -32768…32767 2 baiti
int ndefu -2147483648…2147483647 4 baiti
int fupi isiyotiwa saini 0…65535 2 baiti

Aina halisi

Nambari ya nukta inayoelea inawakilishwa katika umbo la mE +- p, ambapo m ni mantissa (nambari kamili au ya sehemu yenye nukta ya desimali), p ni kipeo (jumla). Kwa kawaida maadili kama kuelea inachukua hadi ka 4, na mara mbili 8 baiti. Jedwali la masafa halisi ya thamani:

kuelea 3.4E-38…3.4E+38 4 baiti
mara mbili 1.7E-308…1.7E+308 8 baiti
mrefu mara mbili 3.4E-4932…3.4E+4932 8 baiti

Aina ya Boolean

Tofauti ya aina bool inaweza kuchukua tu maadili mawili kweli ( kweli ) au fasle ( uongo ). Thamani yoyote isiyo sawa na sifuri inafasiriwa kama kweli. Maana uongo kuwakilishwa katika kumbukumbu kama 0.

aina utupu

Seti ya thamani ya aina hii ni tupu. Inatumika kufafanua chaguo za kukokotoa ambazo hazirejeshi thamani, kubainisha orodha tupu ya hoja za kukokotoa, kama aina ya msingi ya vielelezo, na katika aina ya utendakazi wa utumaji.

Ubadilishaji wa aina ya data

Katika C++, kuna aina mbili za ubadilishaji wa aina ya data: wazi na isiyo wazi.

  • Uongofu kamili hutokea moja kwa moja. Hii inafanywa wakati wa kulinganisha, mgawo, au tathmini ya misemo ya aina anuwai. Kwa mfano, programu ifuatayo itachapisha kwa koni thamani kama kuelea

#pamoja na "stdafx.h" #pamoja na kutumia nafasi ya majina std; int main() ( int i=5; kuelea f=10.12; cout<> utupu"); rudisha 0;)

#pamoja na "stdafx.h"

#pamoja na

kutumia nafasi ya majina std ;

int kuu()

int i = 5; kuelea f = 10.12;

koti<< i / f ;

mfumo ("pause >> utupu");

kurudi 0;

Kipaumbele cha juu kinatolewa kwa aina ambayo kiasi kidogo cha habari kinapotea. Haupaswi kutumia vibaya ubadilishaji wa aina isiyo wazi, kwani hali mbalimbali zisizotarajiwa zinaweza kutokea.

  • Uongofu wazi tofauti na isiyo wazi, inafanywa na programu. Kuna njia kadhaa za kufanya uongofu huu:
  1. Kubadilisha kwa Mitindo C: (elea) a
  2. Kubadilisha kwa Mitindo C++: kuelea ()

Utumaji wa aina pia unaweza kufanywa kwa kutumia shughuli zifuatazo:

tuli_kutupwa<>() const_cast<>() reinterpret_cast<>() dynamic_cast<> ()

tuli_kutupwa<> ()

const_cast<> ()

reinterpret_cast<> ()

dynamic_cast<> ()

tuli_kasi- hubadilisha aina za data zinazohusiana. Opereta huyu hutoa aina kulingana na sheria za kawaida, ambazo zinaweza kuwa muhimu wakati mkusanyaji haifanyi uongofu wa moja kwa moja. Syntax itaonekana kama hii:

Andika tuli_cast<Тип>(kitu);

Kwa kutumia static_cast, huwezi kuondoa uthabiti kutoka kwa kutofautisha, lakini opereta afuatayo anaweza kufanya hivi. const_cast- hutumiwa tu wakati ni muhimu kuondoa uthabiti kutoka kwa kitu. Syntax itaonekana kama hii:

Ainaconst_cast< Aina> (kitu);

reinterpret_cast- kutumika kubadilisha aina tofauti, integer kwa pointer na kinyume chake. Ukiona neno jipya "index" - usifadhaike! Hii pia ni aina ya data, lakini hatutafanya kazi nayo hivi karibuni. Syntax hapa ni sawa na ile ya waendeshaji waliojadiliwa hapo awali:

Ainakutafsiri upya_kutupwa< Aina> (kitu);

dynamic_cast- inatumika kwa ubadilishaji wa nguvu aina, hutekeleza utumaji wa viashiria au marejeleo. Sintaksia:

Ainayenye nguvu _kutupwa< Aina> (kitu);

Dhibiti wahusika

Tayari unazifahamu baadhi ya hizi "wahusika wa kudhibiti" (kwa mfano, na \n). Wote huanza na kurudi nyuma na pia wamezungukwa na nukuu mbili.

Picha

Msimbo wa Hex

Jina

Sauti ya Beeper

Rudi nyuma hatua moja

Tafsiri ya ukurasa (muundo)

Tafsiri ya mstari

Kurudi kwa gari

Jedwali la usawa

Kichupo cha wima