Sveikasis duomenų tipas iš funkcijos. Kintamieji. Postfix tipo žymėjimas


KAM duomenis reiškia bet kokią informaciją, pateiktą tokia forma, kuri leidžia automatizuoti jos rinkimą, saugojimą ir apdorojimą kompiuteryje (skaičiai, simboliai, bitai ir kt.).
Programoje esantys duomenys gali būti originalus(nustatyta programos įvestyje) arba apdorojimo rezultatus(tarpinis arba savaitgalis).
Visi duomenys – kintamieji ir konstantos – priklauso tam tikram tipui.
Kiekvienas duomenų tipas turi savo susietus duomenis verčių diapazonas(baitų skaičius vienai reikšmei) ir galiojančias operacijas.

C/C++ duomenų tipai skirstomi į pagrindinis Ir dariniai.
Pagrindiniai tipai apima:

  1. tuštuma(tuščias tipas),
  2. tarpt(sveiko skaičiaus tipas),
  3. plūdė(tikrieji slankiojo kablelio skaičiai),
  4. dvigubai(dvigubo tikslumo slankiojo kablelio realieji skaičiai),
  5. char(simbolio tipas),
  6. bool- logiška.

Kompozitiniai tipai

Kitiems duomenų naudojimo tipams generuoti pagrindinis tipai + vadinamieji specifikatoriai. Duomenų tipai, sukurti iš standartinių tipų naudojant specifikatorius, vadinami sudėtiniai duomenų tipai. C++ apibrėžia keturias duomenų tipų specifikacijas:
  1. trumpas - trumpas;
  2. ilgas - ilgas;
  3. pasirašė-pasirašė;
  4. nepasirašytas
Išvestiniai tipai yra:
  • masyvai,
  • funkcijos,
  • klases,
  • ženklai,
  • nuorodos,
  • struktūros,
  • asociacijos.

Charakterio tipas

Duomenų tipas char kompiuterio atmintyje visada užima 1 baitą. Taip yra dėl to, kad paprastai simbolio tipo reikšmei skiriamos atminties kiekis yra tiek, kiek reikia bet kuriam iš 256 klaviatūros simbolių išsaugoti.
Simbolio tipas gali būti su ženklu arba nepasirašytas.
Pasirašytais kiekiais pasirašytas char galite saugoti reikšmes diapazone nuo -128 iki 127. Atitinkamai, kintamųjų reikšmės, pvz. nepasirašytas char gali svyruoti nuo 0 iki 255.
Duomenų tipas Vertybių diapazonas Dydis
char -128...+127 1 baitas
nepasirašytas char 0...255 1 baitas
pasirašytas char -128...127 1 baitas

Dirbdami su simbolių duomenimis, turite atsiminti, kad jei išraiškoje yra vienas simbolis, jis turi būti uždarytas pavienės citatos. Simbolių seka, tai yra eilutė, kai naudojama išraiškose, yra dvigubose kabutėse. Pavyzdžiui: „F“, „3“, „Ivanas“, „235“

Sveikasis skaičius

Duomenų tipas tarpt kompiuterio atmintyje gali užimti 2, 4 arba 8 baitus. Tai priklauso nuo procesoriaus bitų dydžio.
Pagal numatytuosius nustatymus visi sveikųjų skaičių tipai laikomi pasirašytais, tai yra, specifikacija pasirašyta(ženklas) gali būti nenurodytas.
Tiksliau nepasirašytas(nepasiženklintas) leidžia pavaizduoti tik teigiamus skaičius.

Sveikųjų skaičių verčių diapazonai

Duomenų tipas Vertybių diapazonas Dydis (baitai)
tarpt
pasirašė tarpt
pasirašė ilgai tarpt
-2147483648 ... 2147483647 4
nepasirašytas tarpt
nepasirašytas ilgas tarpt
0 ... 4294967295 4
trumpas tarpt
pasirašytas trumpas tarpt
-32768 ... 32767 2
nepasirašytas trumpas tarpt 0... 65535 2
ilgas ilgas tarpt \(-(2^{63}-1)...(2^{63}-1)\) 8
nepasirašytas ilgas
ilgas tarpt
\(0...(2^{64}-1)\) 8

Tikras tipas

Vidinis tikrojo skaičiaus atvaizdavimas kompiuterio atmintyje skiriasi nuo sveikojo skaičiaus. Slankaus kablelio skaičius pavaizduotas eksponentine forma. $$\pm meE\pm p$$ kur m- mantisa (sveikasis skaičius arba trupmeninis skaičius su kableliu), R- tvarka (sveikasis skaičius). Norėdami paversti eksponentinės formos skaičių į įprastą fiksuoto taško žymėjimą, mantisą reikia padauginti iš dešimties eilės laipsniu Pavyzdžiui: \(-6.42E+2=-6.42*10^(2)\ )

Realių tipų verčių diapazonai

Duomenų tipas Vertybių diapazonas Dydis (baitai)
plūdė 3.4E-38 ... 3.4E+38 4
dvigubai 1.7E-308... 1.7E+308 8
ilgas dvigubas 3.4E-4932 ... 3.4E+4932 10

Mantisos ilgis lemia skaičiaus tikslumą ir jo diapazono eilės ilgį.
Slankiojantys duomenys užima 4 baitus, iš kurių 1 dvejetainis bitas skiriamas ženklui, 8 bitai eksponentui ir 23 – mantisai. Kadangi svarbiausias mantisos skaitmuo visada yra 1, jis neišsaugomas.
Dvigubo tipo duomenys užima 8 baitus, atitinkamai -11 bitų tvarkai ir -52 bitų mantisai.
Ilgas tipo specifikacija prieš dvigubo tipo pavadinimą rodo, kad reikšmei skirta 10 baitų.

Būlio tipas

Tipo kintamasis bool gali turėti tik dvi reikšmes tiesa(tiesa) arba klaidinga(melas). Bet kuri vertė, kuri nėra nulis, interpretuojama kaip tiesa, o konvertavus į sveikojo skaičiaus tipą, ji tampa 1. Reikšmė false atmintyje atvaizduojama kaip 0.

Tipas negalioja

Šio tipo reikšmių rinkinys tuščias.
Tuštumos tipas naudojamas:
  • funkcijų, kurios negrąžina reikšmės, apibrėžimai;
  • nurodyti tuščią funkcijos argumentų sąrašą;
  • kaip pagrindinis rodyklių tipas;
  • tipo keitimo operacijoje.

Kintamųjų deklaravimas

Kintamasis yra pavadinta atminties sritis, kurioje saugoma konkretaus tipo reikšmė.
Kintamasis turi vardas(identifikatorius) ir prasmė.
vardas naudojamas norint pasiekti atminties sritį, kurioje saugoma reikšmė.
vardas(identifikatorius) yra raidžių, skaičių ir apatinių brūkšnių rinkinys, nurodantis kintamojo pavadinimą, funkcijos pavadinimą arba raktinį žodį programoje. C/C++ kalboje skiriamos didžiosios ir mažosios raidės (t. y. suma ir suma bus traktuojamos kaip du skirtingi kintamieji).
kur, tipo– raktažodis, nusakantis atminties kiekį (baitų skaičių), skirtą kintamojo (kaip programos objekto) reikšmei saugoti (int – sveikasis skaičius, float, double – realus, char – simbolinis, bool – loginis);
vardasunikalus identifikatorius kintamasis, nurodantis kompiuterio atmintyje esančio programos objekto simbolinį adresą;
iniciatorius– pradinė kintamojo reikšmė, kurios aprašyme gali ir nebūti.
Pavyzdžiui: to paties tipo kintamuosius galima grupuoti atskiriant juos „,“. Kintamųjų aprašymas skirtingi tipai yra atskirtas " ; “
Priklausomai nuo to, kur jie deklaruojami, C/C++ kalbos kintamieji gali būti suskirstyti į tris klases:
  1. vietinis – deklaruojamas funkcijos viduje ir pasiekiamas tik joje;
  2. globalus – aprašytas prieš visas funkcijas ir pasiekiamas iš bet kurios programos vietos;
  3. formalieji funkcijų parametrai aprašyti funkcijų parametrų sąraše.
Pavyzdys:

Sveikasis skaičius (int)

Tipo dydis tarpt nėra apibrėžtas standarto, bet priklauso nuo kompiuterio ir kompiliatoriaus.

16 bitų procesoriui šio tipo reikšmėms skiriami 2 baitai,

32 bitams – 4 baitai.

Tiksliau trumpas prieš tipo pavadinimą kompiliatoriui nurodo, kad numeriui reikia skirti 2 baitus, neatsižvelgiant į procesoriaus bitų gylį.

Tiksliau ilgai reiškia, kad sveikojo skaičiaus reikšmė užims 4 baitus.

Taigi 16 bitų kompiuteryje yra int ir short int atitikmenys

o 32 bitų - int ir long int.

Vidinis atstovavimas sveikojo skaičiaus vertės - sveikasis skaičius dvejetainiame kode. Kai naudojate specifikaciją pasirašyta Reikšmingiausias skaičiaus bitas interpretuojamas kaip pažymėtas (0 yra teigiamas skaičius, 1 yra neigiamas skaičius). Tiksliau nepasirašytas leidžia pateikti tik teigiamus skaičius, nes reikšmingiausias bitas laikomas skaičiaus kodo dalimi. Taigi, int reikšmių diapazonas priklauso nuo specifikacijų. Su IBM PC suderinamų kompiuterių sveikųjų skaičių verčių diapazonai su įvairiais specifikacijomis pateikiami lentelėje „Paprastų duomenų tipų verčių diapazonai“.

Pagal numatytuosius nustatymus visi sveikųjų skaičių tipai laikomi pasirašytais, tai reiškia, kad pasirašyto specifikatoriaus galima praleisti.

Programoje rastoms konstantoms pagal jų tipą priskiriami vienokie ar kitokie tipai. Jei dėl kokių nors priežasčių tai netinka programuotojui, galite aiškiai nurodyti reikiamą tipą naudodami priesagas L, l (ilgas) ir U, u (nepasirašytas). Pavyzdžiui, konstanta 32L bus ilgio tipo ir užims 4 baitus. Vienu metu galite naudoti priesagas L ir U, pavyzdžiui, 0x22UL arba 05Lu.

Pastaba. Tipai short int, long int, signed int ir unsigned int gali būti atitinkamai sutrumpinti iki short, long, signed ir unsigned.

Simbolių tipas (char)

Simbolių tipo reikšmei priskiriamas baitų skaičius, kurio pakanka, kad tilptų bet koks simbolis iš tam tikro kompiuterio simbolių rinkinio, kuris ir lemia tipo pavadinimą. Paprastai tai yra 1 baitas. Char tipas, kaip ir kiti sveikųjų skaičių tipai, gali būti pasirašytas arba nepasirašytas. Pasižymėtos reikšmės gali saugoti reikšmes diapazone nuo -128 iki 127. Naudojant nepaženklintą specifikatorių, reikšmės gali svyruoti nuo 0 iki 255. To pakanka, kad būtų išsaugotas bet koks simbolis 256 simbolių ASCII simbolių rinkinyje. Char tipo reikšmės taip pat naudojamos sveikiesiems skaičiams saugoti.



Išplėstinis simbolių tipas (wchar_t)

Tipas wchar_t sukurtas dirbti su simbolių rinkiniu, kuriam užkoduoti neužtenka 1 baito. Pavyzdžiui, Unicode. Šio tipo dydis priklauso nuo įgyvendinimo; kaip taisyklė, tai atitinka tipą trumpas. Wchar_t tipo eilutės konstantos rašomos su L priešdėliu, pavyzdžiui, L„Vartai“.

Būlio tipas (bool)

Būlio reikšmės gali turėti tik reikšmes tiesa Ir klaidinga, kurie yra rezervuoti žodžiai. Vidinė reikšmės false vaizdavimo forma yra 0 (nulis). Bet kuri kita reikšmė interpretuojama kaip tiesa. Konvertuojant į sveikojo skaičiaus tipą tiesa turi reikšmę 1.

Slankaus kablelio tipai (plūduriuojantis, dvigubas ir ilgas dvigubas)

C++ standartas apibrėžia tris duomenų tipus tikrosioms reikšmėms saugoti: float, double ir long double.

Slankaus kablelio duomenų tipai atmintyje saugomi kitaip nei sveikųjų skaičių duomenų tipai. Vidinis tikrojo skaičiaus vaizdavimas susideda iš dviejų dalių - mantisa Ir įsakymas.

Su IBM PC suderinamuose kompiuteriuose tipo reikšmės plūdė užima 4 baitus, iš kurių skiriamas vienas dvejetainis skaitmuo po mantisos ženklu, 8 skaitmenys tvarka ir 23 po mantisa. Mantisa yra skaičius, didesnis nei 1,0, bet mažesnis nei 2,0. Kadangi pagrindinis mantisos skaitmuo visada yra 1, jis nėra saugomas.

Dėl tipo kiekio dvigubas, užimantys 8 baitus, tvarkai ir mantisai skiriami atitinkamai 11 ir 52 bitai. Mantisos ilgis lemia skaičiaus tikslumą, o eksponento ilgis – jo diapazoną. Kaip matote iš lentelės įrašo pabaigoje, esant tiek pat baitų skaičiui, skirtų plūduriuojančioms ir ilgoms int reikšmėms, jų leistinų reikšmių diapazonai labai skiriasi. dėl vidinės reprezentacijos formos.

Tiksliau ilgai prieš tipo pavadinimą dvigubai rodo, kad jo vertei skirta 10 baitų.

Pagal numatytuosius nustatymus slankiojo kablelio konstantos yra dvigubo tipo. Galite aiškiai nurodyti konstantos tipą naudodami priesagas F, f (plaukimas) ir L, l (ilgas).

Pavyzdžiui, konstanta 2E+6L bus long double tipo, o konstanta 1.82f bus float tipo.

Rašydami programas, kurios yra universalios skirtingoms platformoms, negalite daryti prielaidų dėl tipo dydžio tarpt. Norėdami jį gauti, turite naudoti operacijos dydį, kurio rezultatas yra tipo dydis baitais.

Pavyzdžiui, už Operacinė sistema MS-DOS sizeof (int) rezultatas bus 2, bet Windows 98 arba OS/2 atveju rezultatas bus 4.

ANSI standartas nenurodo pagrindinių tipų verčių diapazonų; nustatomi tik jų dydžių santykiai, pavyzdžiui:

(plūdės) dydis ≤ (dvigubas) dydis ≤ (ilgas dvigubas) dydis
dydis(char) ≤ slzeof(trumpas) ≤ dydis(int) ≤ dydis(ilgas)

Pastaba. Mažiausios ir didžiausios leidžiamos sveikųjų skaičių vertės priklauso nuo įgyvendinimo ir yra pateiktos antraštės faile (), realių tipų charakteristikos – byloje (), taip pat numeric_limits klasės šablone

tipas tuščias

Be išvardytų, pagrindiniai kalbos tipai apima tuštumą, tačiau šio tipo reikšmių rinkinys yra tuščias. Jis naudojamas apibrėžti funkcijas, kurios negrąžina reikšmės, nurodyti tuščią funkcijos argumentų sąrašą, kaip pagrindinį rodyklių tipą ir tipo liejimo operacijose.

Skirtingos rūšys buvo įvesti sveikieji ir realieji tipai, besiskiriantys duomenų atvaizdavimo diapazonu ir tikslumu, kad programuotojas turėtų galimybę efektyviausiai išnaudoti konkrečios įrangos galimybes, nes nuo pasirinkimo priklauso skaičiavimų greitis ir atminties kiekis. tipo. Tačiau programa, optimizuota vieno tipo kompiuteriams, gali būti neperkeliama į kitas platformas, todėl apskritai turėtumėte vengti priklausomybės nuo specifines savybes duomenų tipai.

Tipas Vertybių diapazonas Dydis (baitai)
bool tiesa ir netikra
pasirašytas char -128 … 127
nepasirašytas char 0 … 255
pasirašytas trumpas tarpt -32 768 … 32 767
nepasirašytas trumpas tarpt 0 … 65 535
pasirašė ilgai tarpt -2 147 483 648 … 2 147 483 647
nepasirašytas ilgas tarpt 0 … 4 294 967 295
plūdė 3,4e-38 … 3,4e+38
dvigubai 1.7e-308 … 1.7C+308
ilgas dvigubas 3.4e-4932 … 3.4e+4932

Programos struktūra

C++ programa susideda iš funkcijas, aprašymai Ir pirminio procesoriaus nurodymai. Viena iš funkcijų turi turėti pavadinimą pagrindinis. Programos vykdymas prasideda pirmuoju šios funkcijos sakiniu. Paprasčiausias funkcijos apibrėžimas turi tokį formatą:

Paprastai funkcija naudojama reikšmei apskaičiuoti, todėl jos tipas nurodomas prieš funkcijos pavadinimą. Žemiau pateikiama svarbiausia informacija apie funkcijas:

  • jei funkcija neturi grąžinti reikšmės, nurodomas galiojimo tipas:
  • funkcijos korpusas yra blokas, todėl yra uždengtas garbanotomis petnešomis;
  • funkcijos negali būti įdėtos;
  • Kiekvienas teiginys baigiasi kabliataškiu (išskyrus sudėtinį teiginį).

Programos struktūros, kurioje yra pagrindinės, fl ir f2 funkcijos, pavyzdys:

Programa gali būti sudaryta iš kelių moduliai(šaltinio failai).

Pastabos dėl C++ įvesties/išvesties

C++ kalba neturi integruotų įvesties/išvesties įrenginių – ji atliekama naudojant standartinėse bibliotekose esančias funkcijas, tipus ir objektus.

Naudojami du metodai: funkcijos, paveldėtos iš C kalbos, ir C++ objektai.

Pagrindinės C stiliaus I/O funkcijos:

int scanf (const char* formatas, ...) // įvestis
int printf(const char* formatas, ...) // išvestis

Jie atlieka suformatuotą tam tikro skaičiaus reikšmių įvestį ir išvedimą pagal formato eilutę. Formato eilutėje yra simbolių, kurie nukopijuojami į srautą (ekrane) išvestyje arba prašomi iš srauto (iš klaviatūros) įvedant, ir konversijos specifikacijos, prasidedančios % ženklu, kurios pakeičiamos konkrečiomis įvesties reikšmėmis. ir išvestis.

Pavyzdys programa, naudojanti C stiliaus I/O funkcijas:

#įtraukti
int main() (
int i;
printf("Įveskite sveikąjį skaičių\n");
scanf("%d", &i);
printf("Įvedėte skaičių %d, ačiū!", i);
grąžinti 0;
}

Pirmoji šios programos eilutė yra išankstinio procesoriaus direktyva, kuri į programos tekstą įterpia antraštės failą, kuriame aprašomos programoje naudojamos įvesties/išvesties funkcijos (in tokiu atveju kampiniai skliaustai yra kalbos elementas). Visos pirminio procesoriaus direktyvos prasideda # ženklu.

Trečioji eilutė yra sveikojo skaičiaus tipo kintamojo, pavadinto i, aprašymas.

Funkcija printf 4 eilutėje išspausdina raginimą „Įveskite sveikąjį skaičių“ ir pereina į nauja linija pagal pabėgimo seką \n. Funkcija scanf išsaugo sveikąjį skaičių, įvestą iš klaviatūros į kintamąjį i (ženklas & reiškia adreso gavimo operaciją), o sekantis sakinys rodo jame nurodytą eilutę, pakeičiant konversijos specifikaciją šio skaičiaus reikšme.

Programa naudojant C++ klasės biblioteką:

#įtraukti
int main() (
int i;
cout<< "Введите целое число\n"; cin >> i;
cout<< "Вы ввели число " << i << ", спасибо!";
grąžinti 0;
}

Antraštės faile yra įvesties / išvesties valdymo klasių rinkinio aprašymas. Jis apibrėžia standartinius srauto objektus cin klaviatūros įvestims ir cout rodymui, taip pat įdėjimo į srautą operacija< < и чтения из потока >>.

Galite naudoti abu įvesties/išvesties organizavimo būdus, tačiau nerekomenduojama jų maišyti vienoje programoje.

Programuojant duomenų tipas yra dviejų rinkinių rinkinys: reikšmių rinkinys ir operacijų rinkinys, kuris gali būti jiems pritaikytas. Pavyzdžiui, sudėties (+), daugybos (*), sveikųjų skaičių dalybos (/), liekanos (%) ir atimties (-) operacijos gali būti taikomos neneigiamam sveikųjų skaičių duomenų tipui, susidedančiam iš baigtinės natūraliųjų skaičių aibės.

Programavimo kalba paprastai turi primityvių duomenų tipų rinkinį – tipus, kuriuos programavimo kalba teikia kaip pagrindinį integruotą įrenginį. C++ kalboje kalbos kūrėjas tokius tipus vadina pagrindiniais tipais. Pagrindiniai C++ tipai yra šie:

  • boolean(bool);
  • simbolis (pvz., char);
  • int (pvz., int);
  • slankusis kablelis (pvz., plūdė);
  • išvardinimai (nurodyti programuotojo);
  • tuštuma .

Be išvardytų, statomi šie tipai:

  • parodomasis (pvz., int*);
  • masyvai (pvz., char);
  • nuoroda (pvz. double&);
  • kitos struktūros.

Pereikime prie literalo sąvokos (pavyzdžiui, 1, 2.4F, 25e-4, 'a' ir t. t.): literalas yra programos šaltinio kodo įrašas, nurodantis fiksuotą reikšmę. Kitaip tariant, literalas yra tiesiog tam tikro tipo objekto (reikšmės) atvaizdavimas programos kode. C++ turi galimybę rašyti sveikųjų skaičių, slankiojo kablelio, simbolių, loginės reikšmės ir eilučių reikšmes.

Sveikojo skaičiaus tipo literalą galima parašyti taip:

  • 10-oji skaičių sistema. Pavyzdžiui, 1205;
  • 8-oji skaičių sistema formatu 0 + skaičius. Pavyzdžiui, 0142;
  • 16-oji skaičių sistema formatu 0x + skaičius. Pavyzdžiui, 0x2F.

24, 030, 0x18 – tai visi to paties numerio įrašai skirtingose ​​skaičių sistemose.
Norėdami rašyti slankiojo kablelio skaičius, naudokite taškų žymėjimą: 0,1, .5, 4. - arba
eksponentinis žymėjimas - 25e-100. Tokiame įraše neturėtų būti tarpų.

Pavadinimas, su kuriuo galime susieti reikšmes, parašytas literalais, vadinamas kintamuoju. Kintamasis yra pavadinta arba kitaip adresuojama atminties sritis, kurios adresas gali būti naudojamas duomenims pasiekti. Šie duomenys tam tikru būdu įrašomi, perrašomi ir ištrinami atmintyje vykdant programą. Kintamasis leidžia bet kuriuo metu pasiekti duomenis ir, jei reikia, juos pakeisti. Duomenys, kuriuos galima gauti iš kintamojo pavadinimo, vadinami kintamojo reikšme.
Norint programoje naudoti kintamąjį, jis turi būti deklaruotas, o prireikus – apibrėžtas (= inicijuotas). Kintamojo deklaracija programos tekste būtinai susideda iš 2 dalių: bazinio tipo ir deklaratoriaus. Specifikatorius ir iniciatorius yra neprivalomos dalys:

Const int pavyzdys = 3; // čia const yra specifikatorius // int yra pagrindinis tipas // pavyzdys yra kintamojo pavadinimas // = 3 - iniciatorius.

Kintamojo pavadinimas yra simbolių seka, susidedanti iš lotyniškos abėcėlės raidžių (mažųjų ir didžiųjų raidžių), skaičių ir (arba) apatinio brūkšnio, tačiau pirmasis simbolis negali būti skaičius. Kintamojo pavadinimas turi būti pasirinktas taip, kad visada būtų lengva atspėti, kas jame saugoma, pavyzdžiui, „monthPayment“. Pastabose ir praktikoje kintamųjų įrašymo taisyklėms naudosime CamelCase žymėjimą. Kintamojo pavadinimas negali sutapti su kalboje rezervuotais žodžiais; tokių žodžių pavyzdžiai: if, while, function, goto, switch ir kt.

Be kintamojo pavadinimo, deklaratoriuje gali būti papildomų simbolių:

  • * - rodyklė; prieš vardą;
  • *const - pastovus rodyklė; prieš vardą;
  • & - nuoroda; prieš vardą;
  • - masyvas; po vardo;
  • () - funkcija; po vardo.

Iniciatorius leidžia apibrėžti kintamojo reikšmę iškart po jo paskelbimo. Iniciatorius prasideda lygybės pažodžiu (=) ir toliau nustato kintamojo reikšmę. Paprastai kalbant, lygybės ženklas C++ reiškia priskyrimo operaciją; jo pagalba galite nustatyti ir keisti kintamojo reikšmę. Skirtingiems tipams jis gali skirtis.

Specifikatorius nurodo papildomus atributus, išskyrus tipą. Pavyzdyje pateiktas const specifikatorius leidžia uždrausti vėlesnius kintamojo vertės pakeitimus. Tokie nekintamieji kintamieji vadinami pastoviais arba pastoviais.

Konstantos paskelbimas be inicijavimo neveiks dėl loginių priežasčių:

Const int EMPTY_CONST; // klaida, pastovus kintamasis nėra inicijuotas const int PAVYZDYS = 2; // konstanta su 2 reikšme PAVYZDYS = 3; // klaida, bandoma priskirti reikšmę pastoviam kintamajam

Vardinant konstantas, įprasta vartoti tik didžiąsias raides, žodžius atskiriant pabraukimo ženklu.

Pagrindiniai duomenų tipai C++

Nagrinėdamas kiekvieną tipą, skaitytojas neturėtų pamiršti ir duomenų tipo apibrėžimo.

1. Sveikasis skaičius (char, short (int), int, long (int), long long)

Iš pavadinimo nesunku suprasti, kad reikšmių rinkinys susideda iš sveikųjų skaičių. Be to, kiekvieno iš išvardytų tipų verčių rinkinys gali būti pasirašytas arba nepasirašytas. Rinkinyje esančių elementų skaičius priklauso nuo atminties, naudojamos to tipo vertei saugoti, dydžio. Pavyzdžiui, char tipo kintamajam skiriamas 1 baitas atminties, todėl bendras elementų skaičius bus:

  • 2 8N = 2 8 * 1 = 256, kur N yra atminties dydis baitais, kad būtų išsaugota reikšmė

Šiuo atveju galimi sveikųjų skaičių diapazonai yra tokie:

  • - už nepasirašytą char
  • [-128..127] - už pasirašytą char

Pagal numatytuosius nustatymus sveikasis kintamasis laikomas pasirašytu. Norint kode nurodyti, kad kintamasis turi būti nepasirašytas, kairėje prie bazinio tipo pridedamas pasirašytas atributas, t.y. nepasirašytas:

Nepasirašytos ilgos reikšmės; // nurodo sveikąjį skaičių (ilgą) beženklį tipą.

Išvardinti tipai skiriasi tik saugojimui reikalingos atminties dydžiu. Kadangi C++ kalba yra gana priklausoma nuo mašinos, kalbos standartas garantuoja tik šią sąlygą:

  • 1 = char dydis ≤ trumpas dydis ≤ vidinis dydis ≤ ilgas dydis.

Paprastai tipų dydžiai yra tokie: char - 1, short - 2, int - 4, long -8, long long - 8 baitai.

Galite atlikti aritmetines operacijas su sveikųjų skaičių vertėmis: +, -, *, /, %; palyginimo operacijos: ==, !=,<=, <, >, >=; bitų operacijos: &, |, xor,<<, >>.
Dauguma operacijų, tokių kaip sudėtis, daugyba, atimtis ir palyginimas, yra lengvai suprantamos. Kartais, atlikus aritmetinius veiksmus, rezultatas gali būti už reikšmių diapazono ribų; tokiu atveju programa sugeneruos klaidą.
Sveikųjų skaičių padalijimas (/) randa sveikojo skaičiaus dalį, padalytą iš kito. Pavyzdžiui:

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

Procentinis simbolis (%) reiškia dviejų sveikųjų skaičių dalybos likusios dalies nustatymo operaciją:

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

Sunkiau suprantamos bitinės operacijos: & (AND), | (ARBA), xor (išskirtinis OR),<< (побитовый сдвиг влево), >> (bitinis poslinkis į dešinę).

Bitų operacijos AND, OR ir XOR taiko atitinkamą loginę operaciją kiekvienam informacijos bitui:

  • 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 x arba 3 10 = 01 2 x arba 11 2 = 10 2

Apdorojant vaizdą, spalvai naudojami 3 kanalai: raudona, mėlyna ir žalia - plius skaidrumas, kurie saugomi int kintamajame, nes kiekvienas kanalas turi reikšmių diapazoną nuo 0 iki 255. Šešioliktainėje skaičių sistemoje tam tikra reikšmė rašoma taip: 0x180013FF; tada reikšmė 18 16 atitinka raudoną kanalą, 00 16 – mėlyną, 13 16 – žalią, FF – alfa kanalą (skaidrumas). Norint pasirinkti konkretų kanalą iš tokio sveikojo skaičiaus, naudojamas vadinamasis kanalas. kaukė, kur mus dominančios pozicijos yra F 16 arba 1 2. Tai yra, norint paryškinti mėlynojo kanalo vertę, reikia naudoti kaukę, t.y. bitais IR:

Int blue_channel = 0x180013FF ir 0x00FF0000;

Po to gauta reikšmė perkeliama į dešinę reikiamu bitų skaičiumi.

Bitų poslinkis perkelia skaičių į kairę arba į dešinę tiek dvejetainių skaitmenų, kiek nurodyta dešinėje operacijos pusėje. Pavyzdžiui, char tipo skaičius 39 rašomas dvejetainiu būdu taip: 00100111. Tada:

Char binaryPavyzdys = 39; // 00100111 char rezultatas = dvejetainisPavyzdys<< 2; // сдвигаем 2 бита влево, результат: 10011100

Jei kintamasis yra beženklio tipo, rezultatas bus 156, o su ženklu -100. Atkreipkite dėmesį, kad sveikųjų skaičių su ženkleliu tipuose vienetas reikšmingiausiame bitų atvaizdavimo bite yra ženklas, kad skaičius yra neigiamas. Šiuo atveju dvejetainės formos reikšmė, susidedanti iš visų vienetų, atitinka -1; jei 1 yra tik svarbiausiame skaitmenyje, o likę skaitmenys yra nuliai, tada toks skaičius turi mažiausią konkretaus tipo reikšmę: char yra -128.

2. Slankaus kablelio tipas (plūduriuojantis, dvigubas (plūdinis))

Slankiojo kablelio reikšmių rinkinys yra realiųjų skaičių poaibis, tačiau ne kiekvienas realusis skaičius gali būti pavaizduotas dvejetainiu būdu, o tai kartais sukelia kvailų klaidų:

Slankioji vertė = 0,2; reikšmė == 0,2; // klaida, reikšmė čia nebus lygi 0,2.

Dirbdamas su slankiojo kablelio kintamaisiais, programuotojas neturėtų naudoti lygybės ar nelygybės testo, vietoj to paprastai naudojamas testas, skirtas patekti į tam tikrą intervalą:

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

Be palyginimo operacijų, slankiojo kablelio tipas palaiko 4 aritmetines operacijas, kurios visiškai atitinka matematines operacijas su realiais skaičiais.

3. Būlio (loginis) tipas (bool)

Jį sudaro tik dvi reikšmės: tiesa (tiesa) ir klaidinga (klaidinga). Norint dirbti su tokio tipo kintamaisiais, naudojamos loginės operacijos: ! (NE), == (lygybė), != (nelygybė), && (loginė IR), || (logiškas ARBA). Kiekvienos operacijos rezultatą galima rasti atitinkamoje tiesos lentelėje. Pavyzdžiui:

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

4. Simbolių tipas (char, wchar_t)

Char tipas yra ne tik sveikojo skaičiaus tipas (dažniausiai šis tipas vadinamas baitu), bet ir simbolių tipas, išsaugomas simbolio numerį iš lentelės kaip ASCII simbolį. Pavyzdžiui, kodas 0x41 atitinka simbolį „A“, o 0x71 – „t“.

Kartais prireikia naudoti simbolius, kurie nėra fiksuoti ASCII lentelėse, todėl saugojimui reikia daugiau nei 1 baito. Jiems skirtas platus charakteris (wchar_t).

5.1. Masyvai

Masyvai leidžia saugoti nuoseklų to paties tipo elementų rinkinį. Masyvas saugomas atmintyje kaip gretimas blokas, todėl negalite deklaruoti masyvo nenurodę jo dydžio. Norint deklaruoti masyvą, po kintamojo pavadinimo, nurodančio jo dydį, rašomi laužtiniai skliaustai (). Pavyzdžiui:

Int myArray; // 5 sveikojo skaičiaus elementų masyvas

Norint inicijuoti masyvą, reikšmės pateikiamos riestiniuose skliaustuose. Tokiu būdu inicijuoti galite tik kintamojo deklaravimo metu. Beje, šiuo atveju masyvo dydžio nurodyti nebūtina:

Vidutinis koeficientas = (1, 3, 7, 9, 11); // Masyvas inicijuojamas 5 reikšmėmis

Norėdami pasiekti konkrečią reikšmę masyve (masyvo elemente), naudokite rodyklės prieigos operaciją (), nurodant elemento numerį (skaičiai prasideda nuo 0). Pavyzdžiui:

Šansai; // prieiga prie pirmojo masyvo elemento. Grąžina reikšmę 1 koeficientas; // prieiga prie trečiojo elemento. Grąžina reikšmę 7 šansai = 13; // Priskirkite naują reikšmę 5-ajam masyvo šansų elementui; // prieigos klaida

5.3. Stygos

Norėdami parašyti eilutę, programuotojai naudoja idėją, kad eilutė yra nuosekli simbolių serija (masyvas). Norėdami nustatyti eilutės pabaigą, naudokite specialų eilutės pabaigos simbolį: „\0“. Šie specialieji simboliai, sudaryti iš pasvirojo brūkšnio ir identifikuojančio simbolio, vadinami valdymo arba pabėgimo simboliais. Taip pat yra, pavyzdžiui, „\n“ – naujos eilutės pradžia, „\t“ – lentelė. Norėdami rašyti pasvirąjį brūkšnį eilutėje, naudojamas pabėgimas – prieš patį ženklą dedamas kitas pasvirasis brūkšnys: „\“. Pabėgimas taip pat naudojamas kabutėms rašyti.

Sukurkime eilutės kintamąjį:

Char textExample = ('T', 'e', ​​'s', 't', '\0'); // parašyta eilutė "Test".

Yra supaprastintas eilutės inicijavimo žymėjimas:

Char textExample = "Test"; // Paskutinis simbolis neparašytas, bet dydis vis tiek yra 5

Nesileidžiant į smulkmenas, čia yra dar vienas naudingas duomenų tipas – eilutė. Stygos
Šis tipas gali būti pridėtas, pavyzdžiui:

Styga labas = "Sveiki,"; eilutės pavadinimas = "Maksimalus!"; eilutė hello_name = labas + vardas; // Gaukite eilutę "Sveikas, Maksai!"

6. Nuoroda

Int a = 2; // kintamasis "a" nurodo 2 reikšmę int &b = a; // kintamasis „b“ nurodo į tą pačią vietą kaip „a“ b = 4; // pakeisdamas b reikšmę, programuotojas pakeičia a reikšmę. Dabar a = 4 int & c = 4; // klaida, to padaryti negalite, nes nuoroda negali būti priskirta reikšmės

7. Rodyklė

Norėdami suprasti šį duomenų tipą, turite atsiminti, kad daugelis šio tipo reikšmių yra atminties langelių adresai, kuriuose prasideda duomenys. Rodyklė taip pat palaiko sudėjimo (+), atimties (-) ir atskaitos (*) operacijas.

Adresai 0x0 reiškia, kad rodyklė tuščia, t.y. nenurodo jokių duomenų. Šis adresas turi savo pažodinį žodį - NULL:

Int *nullPtr = NULL; // Nulinis rodyklė

Adreso pridėjimas ir atėmimas su sveikuoju skaičiumi arba kitu adresu leidžia
perkelti programai prieinamą atmintį.

Duomenų gavimo operacija, pradedant nuo žymeklyje saugomo adreso, vadinama nuorodų panaikinimu (*). Programa nuskaito reikiamą atminties langelių skaičių ir grąžina atmintyje saugomą reikšmę.

Int valueInMemory = 2; // nustatyti sveikojo skaičiaus kintamąjį int *somePtr = // nukopijuoti kintamojo adresą, čia & - grąžina kintamojo somePtr adresą; // atminties ląstelės adresas, pavyzdžiui, 0x2F *somePtr; // reikšmė saugoma 4 langeliuose: 0x2F, 0x30, 0x31 ir 0x32

Priskyrimo operacija, kuri sintaksiškai yra tokia pati kaip kopijavimo operacija, nėra pasiekiama rodyklėms. Kitaip tariant, galite nukopijuoti kito rodyklės adresą arba kintamojo adresą, bet negalite patys nustatyti adreso reikšmės.

Pati rodyklė saugoma atmintyje, kaip ir kitų tipų kintamųjų reikšmės, ir užima 4 baitus, todėl galite sukurti žymeklį.

8. Pervedimai

Sąrašai yra vienintelis pagrindinis programuotojo apibrėžtas tipas. Apskritai sąrašas yra sutvarkytas įvardytų sveikųjų skaičių konstantų rinkinys, kurio pavadinimas yra pagrindinis tipas.

Enum spalva (RAUDONA, MĖLYNA, ŽALIA);

Pagal numatytuosius nustatymus RAUDONA = 0, MĖLYNA = 1, ŽALIA = 2. Todėl reikšmes galima palyginti tarpusavyje, t.y. RAUDONA< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

Enum prieiga (SKAITYTI = 1, ĮRAŠYTI = 2, VYKDYTI = 4);

Dažnai patogu naudoti sąrašus, kurių reikšmės yra dviejų laipsniai, nes dvejetainiame vaizde skaičius, kurio laipsnis yra 2, sudarys iš 1 ir nulių. Pavyzdžiui:

8 10 = 00001000 2

Šių skaičių sudėjimo rezultatas visada aiškiai parodo, kurie skaičiai buvo pridėti:

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

Tuštuma

Sintaksiškai tuštumos tipas priklauso pagrindiniams tipams, tačiau jis gali būti naudojamas tik kaip sudėtingesnių tipų dalis, nes Tuščio tipo objektų nėra. Paprastai šis tipas naudojamas nurodyti, kad funkcija neturi grąžinimo reikšmės, arba kaip pagrindinis žymeklio tipas į neapibrėžtų tipų objektus:

Tuščias objektas; // klaida, nėra void void tipo objektų // klaida, nėra nuorodų į void void *ptr; // gerai, išsaugokite žymeklį į nežinomą tipą

Dažnai vartosime void konkrečiai norėdami nurodyti, kad funkcija negrąžina jokios reikšmės. Tuščiojo tipo rodyklė naudojama, kai programuotojas prisiima visą atsakomybę už atminties vientisumą ir teisingą tipo liejimą.

Aktoriai

Dažnai reikia perkelti vieno tipo kintamojo reikšmę į kitą. Tuo atveju, kai pradinio tipo reikšmių rinkinys yra didesnio tipo poaibis (pavyzdžiui, int yra long poaibis, o long yra dvigubas), kompiliatorius gali netiesiogiai ( netiesiogiai) pakeiskite vertės tipą.

sveikas skaičius = 2; plūduriuojantis plaukiojantis = sveikasis skaičius; // plaukiojantis = 2.0

Atvirkštinio tipo metimas bus atliktas praradus informaciją, todėl liks tik sveikoji slankiojo kablelio dalis, trupmeninė dalis bus prarasta.

Yra galimybė tiesiogiai konvertuoti tipą; tam kintamojo arba bet kurios pradinio tipo reikšmės kairėje skliausteliuose parašykite tipą, kuriam bus atliktas perdavimas:

Int reikšmė = (int) 2,5;

Vienanarės ir dvejetainės operacijos

Veiksmai, kuriuos atlikome anksčiau, vadinami dvejetainiais: operacijos simbolio kairėje ir dešinėje yra reikšmės arba kintamieji, pavyzdžiui, 2 + 3. Be dvejetainių operacijų, programavimo kalbose taip pat naudojamos vienanarės operacijos, kurios taikomos kintamiesiems. . Jie gali būti kintamojo kairėje arba dešinėje; su keliomis tokiomis operacijomis buvo susidurta ir anksčiau – nuorodos panaikinimo operacija (*) ir kintamojo adreso paėmimas (&) yra nevienodi. Operatoriai „++“ ir „—“ padidina ir sumažina sveikojo skaičiaus kintamojo reikšmę atitinkamai 1 ir gali būti rašomi kintamojo kairėje arba dešinėje.

C++ taip pat naudoja sutrumpintą žymėjimą dvejetainėms operacijoms tuo atveju, kai kairėje ir dešinėje išraiškos pusėse yra tas pats kintamasis, t.y. kai kuri operacija atliekama su kintamojo reikšme, o operacijos rezultatas išsaugomas tame pačiame kintamajame:

A += 2; // tas pats kaip a = a + 2; b /= 5; // toks pat kaip b = b / 5; c &= 3; // tas pats kaip c = c & 3;

Žymos: C kintamieji. char, int, besigned, long, long long, float, double, long double, long float, leksinė apimtis. Kintamųjų deklaravimas. Matomumo sritis. Kintamųjų inicijavimas. Kintamųjų pavadinimai. Eksponentinė forma.

Kintamieji

Kintamieji naudojami reikšmėms saugoti (sic!). Kintamasis apibūdinamas tipu ir pavadinimu. Pradėkime nuo pavadinimo. C kalboje kintamasis gali prasidėti apatiniu brūkšniu arba raide, bet ne skaičiumi. Kintamąjį gali sudaryti angliški simboliai, skaičiai ir apatiniai brūkšniai. Kintamasis neturi atitikti raktinių žodžių (tai specialūs žodžiai, naudojami kaip valdymo konstrukcijos, tipams apibrėžti ir pan.)

automatinis dvigubai tarpt struktūra
pertrauka Kitas ilgai jungiklis
Registruotis typedef char išorinis
grąžinti tuštuma atveju plūdė
nepasirašytas numatytas dėl pasirašyta
sąjunga daryti jeigu dydis
nepastovios Tęsti enum trumpas
kol eilutę
Taip pat, pavyzdžiui, daugybė kitų žodžių, būdingų šiai kompiliatoriaus versijai toli, šalia, mažas, didelis, asm, asm_ ir tt

Pavyzdžiui, teisingi identifikatoriai
a, _, _1_, Sarkasm, a_long_variable, aLongVariable, var19, defaultX, char_type
neištikimas
1a, $ vertė, a-ilgoji vertė, trumpoji

C yra didžiosios ir mažosios raidės. Kintamieji, pavadinti a ir A, arba end ir END, arba perfectDark ir PerfectDarK yra skirtingi kintamieji.

Kintamieji tipai

Kintamojo tipas nustato

  • 1) Kintamojo dydis baitais (kiek baitų atminties kompiuteris skirs reikšmei išsaugoti)
  • 2) Kintamojo atvaizdavimas atmintyje (kaip bitai išskirtoje atminties srityje išsidėstys dvejetaine forma).
Yra keletas pagrindinių tipų C. Padalinkime juos į dvi grupes – sveikuosius skaičius ir slankiojo kablelio skaičius.

Visas

  • char- dydis 1 baitas. Visada! Tai reikia atsiminti.
  • trumpas- dydis 2 baitai
  • tarpt- dydis 4 baitai
  • ilgai- dydis 4 baitai
  • ilgas ilgas- dydis 8 baitai.
Čia reikia padaryti pastabą. C kintamųjų dydis nėra aiškiai apibrėžtas kaip dydis baitais. Standartas tik tai nurodo

char<= short <= int <= long <= long long

Aukščiau pateiktos vertės būdingos VC2012 kompiliatoriui 32 bitų įrenginyje. Taigi, jei jūsų programa priklauso nuo kintamojo dydžio, skirkite laiko išsiaiškinti jo dydį.

Dabar nustatykime didžiausią ir mažiausią skaičių, kuriuos gali saugoti kiekvieno tipo kintamasis. Skaičiai gali būti teigiami arba neigiami. Neigiami skaičiai naudoja vieną bitą ženklui išsaugoti. Kartais ženklas yra būtinas (pavyzdžiui, saugome banko sąskaitą, temperatūrą, koordinates ir pan.), o kartais jis nėra būtinas (svoris, masyvo dydis, žmogaus amžius ir kt.). Norėdami tai padaryti, C naudoja pasirašyto ir nepasirašyto tipo modifikatorių. unsigned char - visi 8 bitai skaičiui, iš viso turime skaičių rinkinį nuo 00000000 iki 11111111 dvejetainiu pavidalu, tai yra nuo 0 iki 255 signed char nuo -128 iki 128. C kalboje kintamieji pasirašomi pagal nutylėjimą. Todėl rašymas char ir signed char yra lygiaverčiai.

Skirtukas. 1 Sveikųjų skaičių tipų dydis c.
Tipas Dydis, baitai Minimali vertė Didžiausia vertė
nepasirašytas char 1 0 255
pasirašytas char
(char)
1 -128 127
nepasirašytas trumpas 2 0 65535
pasirašė trumpai
(trumpas)
2 -32768 32767
nepasirašytas tarpt
(nepasirašytas)
4 0 4294967296
pasirašė tarpt
(int)
4 -2147483648 2147483647
nepasirašytas ilgas 4 0 4294967296
pasirašė ilgai
(ilgai)
4 -2147483648 2147483647
nepasirašytas ilgas ilgas 8 0 18446744073709551615
pasirašė ilgai ilgai
(ilgas ilgas)
8 -9223372036854775808 9223372036854775807

dydis

C yra operatorius, leidžiantis gauti kintamojo dydį baitais. kintamojo dydis arba dydis (kintamasis) arba dydis (tipas). Tai yra operatorius, nes funkcija negali gauti tipo dydžio informacijos programos vykdymo metu. Parašykime nedidelę programą kintamųjų dydžiams patikrinti.

#įtraukti #įtraukti int main() ( char c; short s; int i; long l; long long L; //Skambinkite sizeof kaip "funkcija" printf("sizeof(char) = %d\n", sizeof(c)); printf ("dydis(trumpas) = ​​%d\n", dydis(s)); printf("dydis(int) = %d\n", dydis(i)); printf("dydis(ilgas) = ​​%d \ n", sizeof(l)); printf ("sizeof(long long) = %d\n", sizeof(L)); //Skambinkite kaip operatorių printf("sizeof(char) = %d\n", c dydis); printf("dydis(trumpas) = ​​%d\n", dydis s); printf("dydis(int) = %d\n", dydis i); printf("dydis(ilgas) = ​​%d \ n", dydis l); printf ("dydis(ilgas ilgas) = ​​%d\n", dydis L); _getch(); )

(Manau, kad aišku, kad kintamieji gali turėti bet kokį tinkamą pavadinimą). Ši programa galėjo būti parašyta paprasčiau

#įtraukti #įtraukti int main() ( printf("dydis(char) = %d\n", dydis(char)); printf("dydis(short) = %d\n", dydis(short)); printf("sizeof( int) = %d\n", sizeof(int)); printf("dydis(ilgas) = ​​%d\n", dydis(ilgas)); printf("dydis(ilgas ilgas) = ​​%d\n", sizeof(long long)); //negalite iškviesti sizeof kaip tipo pavadinimo operatoriaus //sizeof int - kompiliavimo klaida _getch(); )

C kalboje tas pats tipas gali turėti kelis pavadinimus
trumpas === trumpas tarpt
ilgas === ilgas tarpt
ilgas ilgas === ilgas ilgas tarpt
unsigned int === nepasirašytas

Slankaus kablelio tipai

  • plūdė- 4 baitai,
  • ilga plūdė- 8 baitai
  • dvigubai- 8 baitai
  • ilgas dvigubas- 8 baitai.
Čia taip pat pateikiamos VC2012 vertės pagal standartinį plūdės tipų dydį<= long float <= double <= long double все числа с плавающей точкой - со знаком.

Kintamasis perpildymas

C nekontroliuoja kintamo perpildymo. Tai reiškia, kad nuolat didindami, tarkime, int tipo kintamojo vertę, galiausiai „iš naujo nustatysime vertę“.

#įtraukti #įtraukti void main() ( unsigned a = 4294967295; int b = 2147483647; //Unsigned type overflow printf("%u\n", a); a += 1; printf("%u", a); //Perpildymas pasirašytas tipas printf("%d\n", b); b += 1; printf("%d", b); getch(); )

Paprastai elgsena, kai kintamasis persipildo, apibrėžiamas tik tipui nepasirašytas: sveikasis skaičius be ženklų iš naujo nustatys vertę. Kitų tipų atveju gali nutikti bet kas, o jei reikia stebėti, ar nėra perpildymo, darykite tai rankiniu būdu, patikrindami argumentus, arba naudokite kitus metodus, priklausomai nuo kompiliatoriaus ir procesoriaus architektūros.

Postfix tipo žymėjimas

Kai dirbate su skaičiais, galite naudoti raides skaičiaus pabaigoje, kad aiškiai nurodytumėte jo tipą, pvz.

  • 11 - tarpinis numeris
  • 10u - nepasirašytas
  • 22l arba 22L - ilgio
  • 3890ll arba 3890LL - ilgas ilgas (taip pat lL arba Ll)
  • 80.0f arba 80.f arba 80.0F – float (įraše turi būti kablelis)
  • 3.0 – dvigubas skaičius
Pagal numatytuosius nustatymus mokslinis žymėjimas taip pat reiškia dvigubą. #įtraukti #įtraukti int main() ( printf("dydis(int) = %d\n", dydis(10)); printf("dydis(unigned) = %d\n", dydis(10u)); printf("dydis( long) = %d\n", sizeof(10l)); printf("dydis(ilgas ilgas) = ​​%d\n", sizeof(10ll)); printf("dydis(float) = %d\n", dydis(10.f)); printf("dydis(double) = %d\n", dydis(10.)); printf("dydis(double) = %d\n", dydis(10e2)); gauti ();)

Tačiau šis kodas nesukels klaidų, nes yra numanomas tipo konvertavimas

Int a = 10u; dvigubas g = 3.f;

Šešioliktainis ir aštuntainis formatas

Dirbdami su skaičiais galite naudoti šešioliktainį ir aštuntainį formatus. Skaičiai šešioliktainėje skaičių sistemoje prasideda 0x, aštuntinėje – nuliu. Atitinkamai, jei skaičius prasideda nuo nulio, jame neturėtų būti skaitmenų, didesnių nei 7:

#įtraukti #įtraukti void main() ( int x = 0xFF; int y = 077; printf("hex x = %x\n", x); printf("dec x = %d\n", x); printf ("oct x" = %o\n", x); printf("okt y = %o\n", y); printf("dec y = %d\n", y); printf("hex y = %x", y); gauti (); )

Mokslinis skaičių žymėjimas

Eksponentinė skaičiaus vaizdavimo forma yra skaičiaus vaizdavimas forma M e ± p, kur M- numerio mantisa, p- dešimties galia. Šiuo atveju mantisoje prieš kablelį turi būti vienas ne nulis ženklas.
Pavyzdžiui, 1,25 === 1,25e0, 123,5 === 1,235e2, 0,0002341 === 2,341e-4 ir kt.
Atvaizdavimas 3.2435e7 atitinka 3.2435e+7
Yra dar vienas vaizdavimas („inžinerija“), kuriame laipsnis turi būti trijų kartotinis. Pavyzdžiui, 1,25 === 1,25e0, 123,5 === 123,5e0, 0,0002341 === 234,1e-6, 0,25873256 === 258,73256e-3 ir kt.

Kintamųjų deklaravimas

C kalboje kintamieji visada deklaruojami bloko pradžioje (blokas yra kodo dalis, atskirta riestiniais skliaustais)

<возвращаемый тип> <имя функции> (<тип> <аргумент>[, <тип> <аргумент>]) (kintamųjų deklaravimas, visa kita)

Deklaruojant kintamąjį rašomas jo tipas ir pavadinimas.

Int a; dvigubas parametras;

Galite deklaruoti kelis to paties tipo kintamuosius, atskirdami pavadinimus kableliais

Ilgas ilgas arg1, arg2, arg3;

Pavyzdžiui

#įtraukti #įtraukti int main() ( int a = 10; int b; while (a>0)( int z = a*a; b += z; ) )

Čia deklaruojami kintamieji a Ir b funkcijos viduje pagrindinis, ir kintamasis z kilpos korpuso viduje. Šis kodas sukels kompiliavimo klaidą

Int main() ( int i; i = 10; int j; )

Taip yra todėl, kad kintamojo deklaracija pateikiama po priskyrimo operatorės. Deklaruodami kintamuosius galite iš karto juos inicijuoti.
int i = 0;
Tačiau inicijavimas deklaruojant kintamąjį nėra laikomas atskiru teiginiu, todėl veiks šis kodas

Int main() ( int i = 10; int j; )

Pradinė kintamojo reikšmė

Labai svarbu atsiminti, kad C kintamieji pagal nutylėjimą nėra inicijuojami iki nulio, kaip daugelyje kitų programavimo kalbų. Deklaravęs kintamąjį, jis išsaugo „šiukšles“ - atsitiktinę reikšmę, kuri lieka atminties srityje, kuri buvo skirta kintamajam. Taip yra visų pirma dėl programos optimizavimo: jei nereikia inicijuoti, nereikia eikvoti išteklių rašant nulius (pastaba: pasauliniai kintamieji inicijuojami nuliais, kodėl taip, skaitykite šį straipsnį) .

#įtraukti #įtraukti int main() ( int i; printf("%d", i); getch(); )

Jei paleisite šią programą VC, vykdymo metu pasirodys įspėjimas
Vykdymo laiko patikros klaida Nr. 3 – kintamasis „i“ naudojamas be jo inicijavimo.
Jei paspausite "Tęsti", programa išves "šiukšles". Daugelyje kitų kompiliatorių nebus įspėjimo, kai programa bus vykdoma.

Kintamoji apimtis

Kintamieji gali būti vietiniai (deklaruojami funkcijos viduje) arba globalūs. Visuotinį kintamąjį mato visos šiame faile nurodytos funkcijos. Vietinį kintamąjį riboja jo apimtis. Kai sakau, kad kintamasis yra „matomas vietoje“, tai reiškia, kad toje vietoje jis yra apibrėžtas ir gali būti naudojamas. Pavyzdžiui, apsvarstykite programą, kuri turi visuotinį kintamąjį

#įtraukti #įtraukti int global = 100; void foo() ( printf("foo: %d\n", global); ) void bar(int global) ( printf("bar: %d\n", global); ) int main() ( foo() ; baras (333); getch (); )

Bus rodomas
kaina: 100
baras: 333
Čia yra pasaulinis kintamasis globalus matomas visoms funkcijoms. Tačiau funkcijos argumentas perrašo visuotinį kintamąjį, todėl perduodant argumentą 333, išspausdinama vietinė reikšmė 333.
Štai dar vienas pavyzdys

#įtraukti #įtraukti int global = 100; int main() ( int global = 555; printf("%d\n", global); getch(); )

Programa išves 555. Kaip ir ankstesniu atveju, vietinis kintamasis yra „svarbesnis“. Pavyzdžiui, tam tikroje srityje deklaruotas kintamasis nėra matomas už jos ribų

#įtraukti #įtraukti int global = 100; int main() ( int x = 10; ( int y = 30; printf("%d", x); ) printf("%d", y); )

Šis pavyzdys nebus sudarytas, nes kintamasis y egzistuoja tik savo bloke.
Štai dar vienas pavyzdys, kai bloke deklaruoti kintamieji sutampa vienas su kitu

#įtraukti #įtraukti int global = 100; int main() ( int x = 10; ( int x = 20; ( int x = 30; printf("%d\n", x); ) printf("%d\n", x); ) printf( "%d\n", x); gauti (); )

Programa išspausdins
30
20
10
Reikėtų vengti visuotinių kintamųjų. Tai galite išgirsti labai dažnai. Pabandykime išsiaiškinti, kodėl. Jūsų paprastuose projektuose pasauliniai kintamieji atrodo gana normaliai. Tačiau įsivaizduokite, kad turite tokią programą

  • 1) Sukurta kelių žmonių ir susidedanti iš šimtų tūkstančių kodo eilučių
  • 2) Veikia keliose gijose

Pirma, visuotinį kintamąjį, jei jis matomas visiems, gali pakeisti bet kuri programos dalis. Pakeičiate visuotinį kintamąjį, norite jį įrašyti, o kita programos dalis jau perrašė jį kita reikšme (iš tikrųjų tai yra visa klasė problemų, kylančių kelių gijų aplinkoje). Antra, esant dideliems projektams, neįmanoma sekti, kas ir kada sukūrė pasaulinius kintamuosius. Aukščiau pateikti pavyzdžiai parodo, kaip kintamieji gali sutapti vienas su kitu, ir tas pats nutiks dideliame projekte.

Žinoma, yra situacijų, kai globalūs kintamieji supaprastina programą, tačiau tokių situacijų pasitaiko nedažnai ir neatsitiks atliekant namų darbus, todėl NEKURKITE GLOBALIŲ KINTAMŲJŲ!
Kintamieji gali būti ne tik sveikieji skaičiai ir slankusis kablelis. Yra daug kitų tipų, kuriuos toliau tyrinėsime.

Šiame skyriuje bus aptariami pagrindiniai C++ duomenų tipai; šie duomenų tipai taip pat vadinami įtaisytaisiais. C++ programavimo kalba yra išplečiama programavimo kalba. Terminas išplečiamas reiškia, kad be įtaisytųjų duomenų tipų galite kurti ir savo duomenų tipus. Štai kodėl C++ yra daugybė duomenų tipų. Mes išnagrinėsime tik pagrindinius.

1 lentelė – C++ duomenų tipai
Tipas baitas Priimtų verčių diapazonas

sveikasis skaičius (Bulio) duomenų tipas

bool 1 0 / 255

sveikojo skaičiaus (simbolių) duomenų tipas

char 1 0 / 255

sveikųjų skaičių duomenų tipai

trumpas tarpt 2 -32 768 / 32 767
nepasirašytas trumpas tarpt 2 0 / 65 535
tarpt 4
nepasirašytas tarpt 4 0 / 4 294 967 295
ilgas tarpt 4 -2 147 483 648 / 2 147 483 647
nepasirašytas ilgas tarpt 4 0 / 4 294 967 295

slankiojo kablelio duomenų tipai

plūdė 4 -2 147 483 648.0 / 2 147 483 647.0
ilga plūdė 8
dvigubai 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

1 lentelėje parodyti pagrindiniai duomenų tipai C++. Visa lentelė suskirstyta į tris stulpelius. Pirmajame stulpelyje nurodomas rezervuotas žodis, kuris kiekvienam nustatys savo duomenų tipą. Antrasis stulpelis rodo baitų, skirtų kintamajam su atitinkamu duomenų tipu, skaičių. Trečiame stulpelyje rodomas priimtinų verčių diapazonas. Atkreipkite dėmesį, kad lentelėje visi duomenų tipai yra išdėstyti nuo mažiausio iki didžiausio.

bool duomenų tipas

Pirmasis lentelėje yra bool duomenų tipas sveikojo skaičiaus duomenų tipas, nes galiojančių reikšmių diapazonas yra sveikieji skaičiai nuo 0 iki 255. Bet kaip jau pastebėjote, skliausteliuose nurodomas loginis duomenų tipas, ir tai taip pat tiesa. Nes bool naudojamas tik Būlio išraiškų rezultatams saugoti. Būlio išraiška gali turėti vieną iš dviejų rezultatų: teisinga arba klaidinga. tiesa - jei loginė išraiška teisinga, klaidinga - jei loginė išraiška klaidinga.

Tačiau kadangi galiojančių bool duomenų tipo verčių diapazonas yra nuo 0 iki 255, reikėjo kažkaip suderinti šį diapazoną su programavimo kalboje apibrėžtomis loginėmis konstantomis teisinga ir klaidinga. Taigi konstanta tiesa yra lygi visiems skaičiams nuo 1 iki 255 imtinai, o konstanta false lygi tik vienam sveikajam skaičiui – 0. Apsvarstykite programą, naudojančią bool duomenų tipą.

// data_type.cpp: apibrėžia konsolės programos įėjimo tašką. #include "stdafx.h" #include naudojant vardų erdvę std; int main(int argc, char* argv) ( bool boolean = 25; // bool tipo kintamasis pavadintas boolean if (bulio) // if cout operatoriaus sąlyga<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

IN 9 eilutėdeklaruojamas tipo kintamasis bool , kuris inicijuojamas į 25. Teoriškai po9 eilutės, loginiame kintamajame turėtų būti skaičius 25, bet iš tikrųjų šiame kintamajame yra skaičius 1. Kaip jau sakiau, skaičius 0 yra klaidinga reikšmė, skaičius 1 yra tikroji reikšmė. Esmė ta, kad kintamajame patinka bool gali būti dvi reikšmės - 0 (klaidinga) arba 1 (teisinga). Tuo tarpu pagal duomenų tipą bool skiriamas visas baitas, o tai reiškia, kad tipo kintamasis bool gali būti skaičiai nuo 0 iki 255. Norint nustatyti klaidingas ir tikras reikšmes, reikia tik dviejų reikšmių 0 ir 1. Kyla klausimas: „Kam skirtos kitos 253 reikšmės?

Remdamiesi šia situacija, sutikome naudoti skaičius nuo 2 iki 255 kaip skaičiaus 1 atitikmenį, tai yra, tiesą. Būtent todėl loginiame kintamajame yra skaičius 25, o ne 1. In 10-13 eilutės deklaravo, kuri kontrolę perduoda operatoriui 11 eilutė, jei sąlyga teisinga, o operatorius yra 13 eilutė, jei sąlyga klaidinga. Programos rezultatas parodytas 1 pav.

Tiesa = 1 Norėdami tęsti, paspauskite bet kurį klavišą. . .

1 paveikslas – bool duomenų tipas

Duomenų tipas char

Duomenų tipas char yra sveikųjų skaičių duomenų tipas, naudojamas simboliams pavaizduoti. Tai reiškia, kad kiekvienas simbolis atitinka tam tikrą skaičių iš diapazono. Char duomenų tipas taip pat vadinamas simbolių duomenų tipu, nes grafinis simbolių atvaizdavimas C++ yra įmanomas dėl char. Simboliams atvaizduoti C++ kalboje char duomenų tipui skiriamas vienas baitas, viename baite yra 8 bitai, tada du pakeliame iki 8 laipsnio ir gauname reikšmę 256 – simbolių, kuriuos galima užkoduoti, skaičių. Taigi, naudodami char duomenų tipą, galite rodyti bet kurį iš 256 simbolių. Visi užkoduoti simboliai pavaizduoti .

ASCII (iš anglų kalbos standartinis kodas informacijos mainams) – amerikietiškas standartinis informacijos mainų kodas.

Apsvarstykite programą, naudojančią char duomenų tipą.

// symbols.cpp: apibrėžia konsolės programos įėjimo tašką. #include "stdafx.h" #include naudojant vardų erdvę std; int main(int argc, char* argv) ( char simbolis = "a"; // char tipo kintamojo deklaravimas ir jo inicijavimas simboliu "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

Taigi, į 9 eilutėkintamasis pavadintas simbolis , jam priskiriama simbolio reikšmė"a" ( ASCII kodas). IN 10 eilutė cout operatorius išspausdina kintamajame esantį simbolį simbolis IN 11 eilutėpaskelbė eilučių masyvą pavadinimu styga , o masyvo dydis nurodomas netiesiogiai. Eilutė saugoma eilučių masyve"Interneto svetainė" . Atkreipkite dėmesį, kad kai išsaugojome simbolį į kintamąjį patinka char , tada po lygybės ženklo dedame pavienes kabutes, kuriose įrašėme simbolį. Inicijuojant eilučių masyvą tam tikra eilute, po lygybės ženklo dedamos dvigubos kabutės, kuriose rašoma tam tikra eilutė. Kaip ir įprastas simbolis, eilutės išvedamos naudojant operatorių cout, 12 eilutė. Programos rezultatas parodytas 2 pav.

Simbolis = eilutė = svetainė Norėdami tęsti, paspauskite bet kurį klavišą. . .

2 paveikslas – char duomenų tipas

Sveikųjų skaičių duomenų tipai

Skaičiams pavaizduoti naudojami sveikųjų skaičių duomenų tipai. 1 lentelėje yra šeši iš jų: short int, unsigned short int, int, unsigned int, long int, besigned long int . Visi jie turi savo atminties dydį ir priimtinų verčių diapazoną. Priklausomai nuo kompiliatoriaus, užimtos atminties dydis ir priimtų reikšmių diapazonas gali skirtis. 1 lentelėje pateikiami visi MVS2010 kompiliatoriaus priimtinų verčių ir užimtos atminties dydžių diapazonai. Be to, visi duomenų tipai 1 lentelėje yra išdėstyti didėjančia tvarka, atsižvelgiant į užimtos atminties dydį ir priimtų reikšmių diapazoną. Priimtų reikšmių diapazonas vienaip ar kitaip priklauso nuo užimtos atminties dydžio. Atitinkamai, kuo didesnis užimtos atminties dydis, tuo didesnis priimamų reikšmių diapazonas. Be to, priimamų reikšmių diapazonas pasikeičia, jei duomenų tipas deklaruojamas su nepasirašytu priešdėliu. Nepasirašytas priešdėlis reiškia, kad duomenų tipas negali saugoti pasirašytų verčių, tada teigiamų reikšmių diapazonas padvigubinamas, pavyzdžiui, trumpųjų int ir nepasirašytų trumpųjų int duomenų tipai.

Sveikųjų skaičių duomenų tipo priešdėliai:

trumpas priešdėlis sutrumpina duomenų tipą, kuriam jis taikomas, sumažindamas jo užimamos atminties dydį;

ilgai priešdėlis išplečia duomenų tipą, kuriam jis taikomas, padidindamas jo užimamos atminties dydį;

nepasirašytas – priešdėlis padvigubina teigiamų reikšmių diapazoną, o neigiamų verčių diapazonas negali būti saugomas šiame duomenų tipe.

Taigi, iš esmės, mes turime vieną sveikųjų skaičių tipą, kuris reiškia sveikuosius skaičius: int duomenų tipą. Dėka priešdėlių trumpas, ilgas, nepaženklintas, atsiranda tam tikra int duomenų tipų įvairovė, kuri skiriasi užimtos atminties dydžiu ir (ar) priimtų reikšmių diapazonu.

Slankaus kablelio duomenų tipai

C++ yra dviejų tipų slankiojo kablelio duomenys: plūduriuojantys ir dvigubi. Slankaus kablelio duomenų tipai yra skirti saugoti slankiojo kablelio skaičius. Slankiųjų ir dvigubų duomenų tipai gali saugoti tiek teigiamus, tiek neigiamus slankiojo kablelio skaičius. Slankiojo duomenų tipo atminties plotas yra perpus mažesnis nei dvigubo duomenų tipo, o tai reiškia, kad priimtų reikšmių diapazonas taip pat yra mažesnis. Jei plūduriuojančių duomenų tipas deklaruojamas su ilgu priešdėliu, tada priimtų verčių diapazonas bus lygus dvigubo duomenų tipo priimtų verčių diapazonui. Iš esmės slankiojo kablelio duomenų tipai reikalingi norint išspręsti didelio skaičiavimo tikslumo problemas, pvz., pinigų operacijas.

Taigi, mes apžvelgėme pagrindinius dalykus, susijusius su pagrindiniais duomenų tipais C++. Belieka tik parodyti, iš kur atsiranda visi šie priimtinų verčių diapazonai ir užimtos atminties dydžiai. Tam mes sukursime programą, kuri apskaičiuos pagrindines visų aukščiau aptartų duomenų tipų charakteristikas.

// data_types.cpp: apibrėžia konsolės programos įėjimo tašką. #include "stdafx.h" #include // I/O manipuliavimo biblioteka #include // matematinių funkcijų antraštės failas #include naudojant vardų erdvę std; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // stulpelių antraštės <<"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; }

Ši programa paskelbta tam, kad galėtumėte peržiūrėti savo sistemos duomenų tipų charakteristikas. Nereikia suprasti kodo, nes programa naudoja valdymo sakinius, su kuriais greičiausiai dar nesate susipažinę. Norėdami paviršutiniškai susipažinti su programos kodu, toliau paaiškinsiu keletą punktų. operatorius dydis() Skaičiuoja duomenų tipui arba kintamajam skirtų baitų skaičių. Funkcija pow(x,y) pakelia prasmę x iki y laipsnio , ši funkcija pasiekiama antraštės faile . fiksuoti ir setprecision() manipuliatoriai galima iš antraštės failo . Pirmasis yra fiksuotas , perduoda vertes fiksuota forma į išvesties srautą. Manipuliatorius setprecision(n) rodo n po kablelio. Didžiausia tam tikro duomenų tipo vertė apskaičiuojama pagal šią formulę:

Max_val_type = 2^(b * 8 - 1) - 1; // duomenų tipams su neigiamais ir teigiamais skaičiais // kur b yra baitų, skirtų atmintyje šio duomenų tipo kintamajam, skaičius // padauginkite iš 8, nes viename baite yra 8 bitai // skliausteliuose atimkite 1, kadangi diapazono skaičiai turi būti padalyti į dvi dalis teigiamoms ir neigiamoms reikšmėms // pabaigoje atimkite 1, nes skaičių diapazonas prasideda nuo nulio // duomenų tipai su priešdėliu be ženklo max_val_type = 2^(b * 8) - 1; // duomenų tipams tik su teigiamais skaičiais // formulės paaiškinimai panašūs, tik vienetas neatimamas iš skliausto

Programos veikimo pavyzdį galima pamatyti 3 paveiksle. Pirmame stulpelyje rodomi pagrindiniai duomenų tipai C++ kalboje, antrame stulpelyje rodomas kiekvienam duomenų tipui skirtos atminties dydis, o trečiame stulpelyje rodoma didžiausia reikšmė, kurią atitinkama duomenų tipe gali būti. Mažiausia vertė randama panaši į didžiausią. Duomenų tipams su nepasirašytu priešdėliu mažiausia reikšmė yra 0.

Duomenų tipo baitų maksimali reikšmė bool = 1 255,00 char = 1 255,00 trumpas int = 2 32767,00 unsigned short int = 2 65535,00 int = 4 2147483647,00 unsigned int = 4 4295,00 beženklis int = 4 4295,60 7 4215,60 7 4215,60 00 nepasirašytas ilgas tarpas = 4 4294967295,00 float = 4 2147483647,00 double = 8 9223372036854775808.00 Norėdami tęsti, paspauskite bet kurį klavišą. . .

3 pav. – C++ duomenų tipai

Jei, pavyzdžiui, short int tipo kintamajam priskiriama reikšmė 33000, tada bitų tinklelis persipildys, nes didžiausia short int tipo kintamojo reikšmė yra 32767. Tai yra, kintamajame bus saugoma kita reikšmė. tipo short int, greičiausiai jis bus neigiamas. Kadangi palietėme int duomenų tipą, verta paminėti, kad galite praleisti raktinį žodį int ir parašyti, pavyzdžiui, tik trumpai . Kompiliatorius tokį įrašą interpretuos kaip trumpą int . Tas pats pasakytina ir apie ilgus ir nepasirašytus priešdėlius. Pavyzdžiui:

// duomenų tipo santrumpa int short a1; // toks pat kaip trumpas int long a1; // tas pats, kas ilgas int unsigned a1; // tas pats kaip unsigned int unsigned short a1; // toks pat kaip nepasirašytas trumpasis tarpt

Redaktoriaus pasirinkimas
Lazdyno riešutas yra auginama laukinio lazdyno atmaina. Pažiūrėkime, kokia lazdyno riešutų nauda ir kaip jie veikia organizmą...

Vitaminas B6 yra kelių medžiagų, turinčių panašų biologinį aktyvumą, derinys. Vitaminas B6 yra labai...

Tirpios skaidulos pritraukia vandenį į žarnyną, o tai suminkština išmatas ir palaiko reguliarų tuštinimąsi. Ji ne tik padeda...

Apžvalga Didelis fosfato (arba fosforo) kiekis kraujyje vadinamas hiperfosfatemija. Fosfatas yra elektrolitas, kuris...
Hysterosalpingografija yra invazinė procedūra, tai yra reikalaujama instrumentų įsiskverbimo į įvairias...
Prostatos liauka yra svarbus vyrų organas vyrų reprodukcinėje sistemoje. Apie prevencijos svarbą ir laiku...
Žarnyno disbiozė yra labai dažna problema, su kuria susiduria tiek vaikai, tiek suaugusieji. Liga lydi...
Lytinių organų sužalojimai išsivysto nukritus, ypač ant aštrių ir veriančių daiktų, lytinio akto metu, įvedus į makštį...
Vienas iš labiausiai paplitusių gerybinių moterų navikų yra gimdos fibroma. Navikas daugiausia susideda iš tankių...