Čo znamená long int v c. Dátové typy v C. C Programovanie

  • 28.08.2019

Typy údajov

Dátové typy sú v C# mimoriadne dôležité, pretože ide o silne typovaný jazyk. To znamená, že všetky operácie sú prísne typovo kontrolované kompilátorom a nekompilované sú neplatné operácie. Preto silné písanie pomáha odstraňovať chyby a zlepšovať spoľahlivosť programov. Aby sa zabezpečila kontrola typu, všetky premenné, výrazy a hodnoty musia byť konkrétneho typu. V tomto programovacom jazyku neexistuje nič také ako „beztypová“ premenná. Okrem toho typ hodnoty určuje operácie, ktoré sa s ňou môžu vykonávať. Operácia, ktorá je povolená pre jeden typ údajov, nemusí byť povolená pre iný.

V C# existujú dve všeobecné kategórie vstavaných dátových typov: hodnotové typy a referenčné typy. Líšia sa obsahom premennej. Koncepčne je rozdiel medzi nimi v tom, že typ hodnoty ukladá údaje priamo, zatiaľ čo typ odkazu ukladá odkaz na hodnotu.

Tieto typy sú uložené na rôznych miestach v pamäti: typy hodnôt sú uložené v oblasti známej ako zásobník, zatiaľ čo referenčné typy sú uložené v oblasti nazývanej riadená halda.

Pozrime sa hodnotové typy.

Celočíselné typy

C# definuje deväť celočíselných typov: char, byte, sbyte, short, ushort, int, uint, long a ulong. Typ char sa však používa hlavne na reprezentáciu znakov, a preto sa s ním zaobchádza oddelene. Zvyšných osem celočíselných typov slúži na numerické výpočty. Nižšie je uvedený rozsah ich reprezentácie čísel a bitovej hĺbky:

Celočíselné typy C#
Typ typ CTS Bitová hĺbka Rozsah
byte System.Byte 8 0:255
sbyte System.SByte 8 -128:127
krátky System.Int16 16 -32768: 32767
ushort System.UInt16 16 0: 65535
int System.Int32 32 -2147483648: 2147483647
uint System.UInt32 32 0: 4294967295
dlhý System.Int64 64 -9223372036854775808: 9223372036854775807
ulong System.UInt64 64 0: 18446744073709551615

Ako ukazuje tabuľka vyššie, C# definuje podpísané aj nepodpísané verzie rôznych celočíselných typov. Typy celých čísel so znamienkom sa líšia od svojich náprotivkov bez znamienka v tom, ako interpretujú najvýznamnejší bit celého čísla. Napríklad, ak program špecifikuje hodnotu celého čísla so znamienkom, kompilátor C# vygeneruje kód, ktorý používa bit vysokého rádu celého čísla ako príznak znamienka. Číslo sa považuje za kladné, ak príznak znamienka je 0, a záporné, ak je 1.

Záporné čísla sú takmer vždy reprezentované metódou dvojkového doplnku, pri ktorej sa najprv obrátia všetky binárne číslice záporného čísla a potom sa k tomuto číslu pridá 1.

Pravdepodobne najbežnejším typom celého čísla v programovaní je zadajte int. Premenné typu int sa často používajú na riadenie slučky, indexovanie poľa a univerzálnu matematiku. Ak potrebujete celočíselnú hodnotu s väčším rozsahom reprezentácie čísel ako typ int, potom na tento účel existuje množstvo iných celočíselných typov.

Ak teda hodnotu treba uložiť bez znamienka, môžete si ju vybrať typ uint, pre veľké hodnoty so znamienkom - dlhý typ a pre veľké hodnoty bez znamienka typ ulong. Ako príklad nižšie je program, ktorý vypočítava vzdialenosť od Zeme k Slnku v centimetroch. Na uloženie takej veľkej hodnoty používa premennú typu long:

Používanie systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Text; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( long result; const long km = 149800000; // vzdialenosť v km. result = km * 1000 * 100; Console.WriteLine(result); Console.ReadLine(); )))

Všetkým celočíselným premenným je možné priradiť hodnoty v desiatkovej alebo hexadecimálnej sústave. V druhom prípade sa vyžaduje predpona 0x:

Dlhé x = 0x12ab;

Ak existuje neistota, či je celočíselná hodnota typu int, uint, long alebo ulong, potom predvolená prijaté int. Ak chcete explicitne určiť, ktorý iný typ celého čísla by mala mať hodnota, môžete k číslu pridať nasledujúce znaky:

Uint ui = 1234U; dlhý l = 1234L; ulong ul = 1234UL;

U a L možno písať aj malými písmenami, hoci malé L možno vizuálne zameniť s číslom 1 (jedna).

typy s pohyblivou rádovou čiarkou

Typy s pohyblivou rádovou čiarkou vám umožňujú reprezentovať čísla zlomkovou časťou. V C# existujú dva druhy dátových typov s pohyblivou rádovou čiarkou: plavák a dvojitý. Predstavujú číselné hodnoty s jednoduchou a dvojitou presnosťou. Typ float je teda 32 bitov, čo približne zodpovedá rozsahu reprezentácie čísel od 5E-45 do 3,4E+38. A bitová hĺbka dvojitého typu je 64 bitov, čo približne zodpovedá rozsahu reprezentácie čísel od 5E-324 do 1,7E + 308.

Typ údajov float je určený pre menšie hodnoty s pohyblivou rádovou čiarkou, ktoré vyžadujú menšiu presnosť. Dátový typ double je väčší ako float a ponúka vyšší stupeň presnosti (15 bitov).

Ak je v zdrojovom kóde pevne zakódovaná neceločíselná hodnota (napríklad 12.3), kompilátor zvyčajne predpokladá, že sa myslí hodnota typu double. Ak je potrebné zadať hodnotu ako pohyblivú, budete k nej musieť pridať znak F (alebo f):

Float f = 12,3F;

Desatinný typ údajov

K dispozícii je aj desiatkový typ, ktorý predstavuje vysoko presné čísla s pohyblivou rádovou čiarkou. desiatkový, ktorý je určený na použitie pri finančných výpočtoch. Tento typ je široký 128 bitov, aby predstavoval číselné hodnoty v rozsahu od 1E-28 do 7,9E+28. Pravdepodobne viete, že bežná aritmetika s pohyblivou rádovou čiarkou je náchylná na chyby zaokrúhľovania desatinných miest. Tieto chyby sú eliminované použitím desatinného typu, ktorý umožňuje reprezentovať čísla s presnosťou až 28 (niekedy aj 29) desatinných miest. Pretože tento typ údajov môže predstavovať desatinné hodnoty bez chýb zaokrúhľovania, je obzvlášť užitočný pre finančné výpočty:

Používanie systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Text; menný priestor ConsoleApplication1 ( class Program ( static void Main(string args) ( // *** Výpočet nákladov na investíciu pomocou *** // *** pevná miera návratnosti*** desiatkové peniaze, percentá; int i; konšt. bajt rokov = 15; peniaze = 1 000,0 mil.; percento = 0,045 mil.; pre (i = 1; i

Výstupom tohto programu bude:

Symboly

V C# nie sú znaky reprezentované 8-bitovým kódom, ako v mnohých iných programovacích jazykoch, napríklad C++, ale 16-bitovým kódom tzv. Unicode (Unicode). V Unicode je znaková sada taká široká, že pokrýva znaky z takmer každého prirodzeného jazyka na svete. Zatiaľ čo mnohé prirodzené jazyky, vrátane angličtiny, francúzštiny a nemčiny, sa vyznačujú relatívne malými abecedami, množstvo iných jazykov, ako napríklad čínština, používa pomerne veľké sady znakov, ktoré nemožno reprezentovať 8-bitovým kódom. Na prekonanie tohto obmedzenia definuje C# typ char A, ktoré predstavuje 16-bitové hodnoty bez znamienka medzi 0 a 65 535. Štandardná 8-bitová znaková sada ASCII je však podmnožinou Unicode medzi 0 a 127. Preto sú znaky ASCII stále platné v C#.

Tento cheat poskytuje informácie o hlavných dátových typoch programovacieho jazyka C++ a vlastnostiach ich implementácie. Na konci záznamu je tiež tabuľka s rozsahmi hodnôt týchto typov.

Koncept dátového typu

Hlavným účelom každého programu je spracovávať údaje. Rôzne typy údajov sa ukladajú a spracúvajú odlišne. V akomkoľvek algoritmickom jazyku musí mať každá konštanta, premenná, výraz alebo výsledok hodnotenia funkcie určitý typ.

Typ údajov definuje:

  • interná reprezentácia údajov v počítačovej pamäti;
  • množina hodnôt, ktoré môžu hodnoty tohto typu nadobudnúť;
  • operácie a funkcie, ktoré možno použiť na hodnoty tohto typu.

Na základe týchto charakteristík si programátor vyberie typ každej hodnoty použitej v programe na reprezentáciu skutočných objektov. Povinná deklarácia typu umožňuje kompilátoru kontrolovať platnosť rôznych programových konštrukcií. Typ hodnoty určuje strojové inštrukcie, ktoré sa použijú na spracovanie údajov.

Všetky typy jazyka C++ možno rozdeliť na Hlavná a zložený . C++ definuje šesť hlavný dátové typy na reprezentáciu celočíselných, reálnych, symbolických a logických hodnôt. Na základe týchto typov môže programátor zadať popis zložka typy. Patria sem polia, enumy, funkcie, štruktúry, odkazy, ukazovatele, zväzky a triedy.

Základné dátové typy v C++

Základné (štandardné) dátové typy sa často nazývajú aritmetické, pretože sa dajú použiť v aritmetických operáciách. Nasledujúce sú definované na popis hlavných typov:

  1. int(celé číslo);
  2. char (znak);
  3. wchar_t (široký znak);
  4. bool (boolovský);
  5. plavák (skutočný);
  6. double (skutočné s dvojnásobnou presnosťou).

Prvé štyri tingy sa nazývajú celé číslo ( celý ), posledné dve typy s pohyblivou rádovou čiarkou . Kód, ktorý kompilátor vygeneruje na spracovanie celočíselných hodnôt, sa líši od kódu pre hodnoty s pohyblivou rádovou čiarkou.

Sú tu štyri špecifikátor typu , s uvedením internej reprezentácie a rozsahu hodnôt štandardných typov:

  • krátky (krátky);
  • dlhý (dlhý);
  • podpísaný (podpísať);
  • nepodpísaný (nepodpísaný).

Typ celého čísla (int)

Veľkosť typu int nie je definovaná štandardom, ale závisí od počítača a kompilátora. Pre 16-bitový procesor sú pre hodnoty tohto typu alokované 2 bajty, pre 32-bitový procesor - 4 bajty.

Krátky špecifikátor pred názvom typu hovorí kompilátoru, že pre číslo sú potrebné 2 bajty, bez ohľadu na kapacitu procesora. Špecifikátor long znamená, že celočíselná hodnota bude trvať 4 bajty. Na 16-bitovom počítači sú teda ekvivalenty int a short int a na 32-bitovom počítači int a long int.

Vnútorné zastúpenie hodnoty typu integer - celé číslo v binárnom kóde. Pri použití špecifikátora so znamienkom sa najvýznamnejší bit čísla interpretuje ako znamienko (0 - kladné číslo, 1 - záporné číslo). Špecifikátor bez znamienka umožňuje reprezentovať iba kladné čísla, pretože najvýznamnejšia číslica sa považuje za súčasť kódu čísla. Rozsah hodnôt typu int teda závisí od špecifikátorov. Rozsahy hodnôt hodnôt celočíselného typu s rôznymi špecifikátormi pre počítače kompatibilné s IBM PC sú uvedené v tabuľke „Rozsahy hodnôt jednoduchých dátových typov“ na konci položky.

V predvolenom nastavení sa všetky typy celých čísel považujú za podpísané, čo znamená, že špecifikátor so znamienkom možno vynechať.

Konštantám, ktoré sa vyskytujú v programe, je priradený jeden alebo druhý typ podľa ich typu. Ak tento typ programátorovi z nejakého dôvodu nevyhovuje, môže požadovaný typ výslovne špecifikovať pomocou koncoviek L, l (dlhý) a U, u (bez znamienka). Napríklad konštanta 32L bude typu long a zaberie 4 bajty. Prípony L a U môžete použiť súčasne, napríklad 0x22UL alebo 05Lu.

Poznámka

Typy short int, long int, signed int a unsigned int možno skrátiť na short, long, signed a unsigned.

Typ znaku (char)

Hodnota typu znaku je počet bajtov dostatočný na umiestnenie akéhokoľvek znaku zo znakovej sady pre daný počítač, ktorý viedol k názvu typu. Zvyčajne je to 1 bajt. Typ char, podobne ako iné celočíselné typy, môže byť podpísaný alebo bez znamienka. Hodnoty so znamienkom môžu ukladať hodnoty v rozsahu od -128 do 127. Pri použití špecifikátora bez znamienka sa hodnoty môžu pohybovať od 0 do 255. To stačí na uloženie ľubovoľného znaku v 256-znakovej znakovej sade ASCII. Hodnoty typu char sa tiež používajú na ukladanie celých čísel, ktoré nepresahujú hranice zadaných rozsahov.

Rozšírený typ znaku (wchar_t)

Typ wchar_t je navrhnutý tak, aby pracoval so množinou znakov, pre ktoré 1 bajt nestačí na zakódovanie, ako napríklad Unicode. Veľkosť tohto typu závisí od implementácie; spravidla zodpovedá krátkemu typu. Reťazcové konštanty typu wchar_t sa zapisujú s predponou L, napríklad L"Gates".

boolovský typ (bool)

Booleovské hodnoty môžu mať iba hodnoty true a false, čo sú vyhradené slová. Vnútorná reprezentácia nepravdy je 0 (nula). Akákoľvek iná hodnota sa interpretuje ako pravdivá. Pri konverzii na celočíselný typ má true hodnotu 1.

Typy s pohyblivou rádovou čiarkou (plávajúca, dvojitá a dlhá dvojitá)

Štandard C++ definuje tri typy údajov na ukladanie skutočných hodnôt: float, double a long double.

Dátové typy s pohyblivou rádovou čiarkou sú uložené inak v pamäti počítača ako celočíselné dátové typy. Vnútorná reprezentácia reálneho čísla pozostáva z dvoch častí – mantisy a exponentu. Na počítačoch kompatibilných s IBM PC zaberajú pohyblivé hodnoty 4 bajty, z ktorých jeden bit je alokovaný pre znamienko mantisy, 8 bitov pre exponent a 23 pre mantisu. Mantisa je číslo väčšie ako 1,0, ale menšie ako 2,0. Keďže najvyššia číslica mantisy je vždy 1, neukladá sa.

Pre hodnoty typu double, ktoré zaberajú 8 bajtov, je pre objednávku a mantisu pridelených 11 a 52 číslic. Dĺžka mantisy určuje presnosť čísla, zatiaľ čo dĺžka exponentu určuje jeho rozsah. Ako môžete vidieť z tabuľky na konci záznamu, pri rovnakom počte bajtov pridelených pre float a long int hodnoty sa rozsahy ich platných hodnôt značne líšia kvôli forme interného zastúpenia.

Dlhý špecifikátor pred názvom dvojitého typu označuje, že pre jeho hodnotu je alokovaných 10 bajtov.

Konštanty s pohyblivou rádovou čiarkou sú štandardne typu double. Typ konštanty môžete explicitne určiť pomocou prípon F, f (float) a L, l (long). Napríklad konštanta 2E+6L by bola typu long double a konštanta 1,82f by bola typu float.

Ak chcete písať multiplatformové programy, nemôžete robiť predpoklady o veľkosti typu int. Na jeho získanie je potrebné použiť operátor sizeof, ktorý vráti veľkosť typu v bajtoch. Napríklad v operačnom systéme MS-DOS bude sizeof(int) výsledkom 2 a v systéme Windows 98 alebo OS/2 bude výsledkom 4.

Norma ANSI nešpecifikuje rozsahy hodnôt pre hlavné typy, sú definované iba pomery medzi ich veľkosťami, napríklad:

sizeof(float) ≤ slzeof(double) ≤ sizeof(long double)
sizeof(char) ≤ slzeof(short) ≤ sizeof(int) ≤ sizeof(long)

Poznámka

Minimálne a maximálne povolené hodnoty pre celočíselné typy závisia od implementácie a sú uvedené v hlavičkovom súbore (), charakteristika reálnych typov - v súbore (), ako aj v šablóne triedy numeric_limits

prázdny typ

Okrem uvedených je typ void jedným z hlavných typov jazyka, ale množina hodnôt tohto typu je prázdna. Používa sa na definovanie funkcií, ktoré nevracajú hodnotu, na špecifikovanie prázdneho zoznamu argumentov funkcie ako základného typu pre ukazovatele a pri operáciách pretypovania.

Rozsahy hodnôt jednoduchých dátových typov v C++ pre počítače kompatibilné s IBM PC

Otázka: Čo znamená pojem IBM PC-kompatibilný počítač?
A: Počítač kompatibilný s IBM PC (angl. IBM PC compatible) - počítač, ktorý je architektonicky blízky počítačom IBM PC, XT a AT. Počítače kompatibilné s IBM PC sú založené na mikroprocesoroch kompatibilných s procesorom Intel 8086 (a ako viete, všetky neskoršie procesory Intel sú plne spätne kompatibilné s procesorom 8086). V skutočnosti sú to takmer všetky moderné počítače.

Zavádzajú sa rôzne typy celočíselných a reálnych typov, ktoré sa líšia rozsahom a presnosťou reprezentácie údajov, aby programátor mohol čo najefektívnejšie využívať možnosti konkrétneho hardvéru, pretože rýchlosť výpočtov a množstvo pamäte závisia od výber typu. Program optimalizovaný pre jeden typ počítača sa však môže stať neprenosným na iné platformy, takže vo všeobecnosti je potrebné vyhnúť sa závislostiam na špecifických charakteristikách typov údajov.

Typ Rozsah hodnôt Veľkosť (bajt)
bool pravda a nepravda 1
podpísaný char -128 … 127 1
nepodpísaný char 0 … 255 1
podpísané krátke int -32 768 … 32 767 2
unsigned short int 0 … 65 535 2
podpísané dlhé int -2 147 483 648 … 2 147 483 647 4
unsigned long int 0 … 4 294 967 295 4
plavák 3,4e-38 … 3,4e+38 4
dvojitý 1,7e-308 … 1,7C+308 8
dlhý dvojitý 3,4e-4932 … 3,4e+4932 10

Pre reálne typy sú v tabuľke uvedené absolútne hodnoty minimálnych a maximálnych hodnôt.

Okrem delenia údajov na premenné a konštanty existuje klasifikácia údajov podľa typu. Deklarácia premenných spočíva predovšetkým v deklarovaní ich typu. Dátový typ charakterizuje rozsah ich hodnôt a formu zobrazenia v pamäti počítača. Každý typ je charakterizovaný súborom operácií vykonávaných s údajmi. Tradične majú generické programovacie jazyky štandardné typy, ako sú integer, real, character a boolean 3 . Hneď si všimneme, že v C neexistuje žiadny logický typ. Výraz (najmä premenná) sa považuje za pravdivý, ak je nenulový, inak sa považuje za nepravdivý.

Existencia dvoch číselných typov (celočíselné a reálne) je spojená s dvomi možnými formami reprezentácie čísel v pamäti počítača.

Údaje celočíselný typ uložené vo formulári zobrazenia pevný bod. Vyznačuje sa absolútnou presnosťou reprezentácie čísel a vykonávania operácií s nimi, ako aj obmedzeným rozsahom čísel. Typ celé číslo sa používa pre údaje, ktoré v zásade nemôžu mať zlomkovú časť (počet ľudí, áut atď., čísla a počítadlá).

skutočný typ zodpovedá forme znázornenia čísel s pohyblivou rádovou čiarkou, ktorý sa vyznačuje približným znázornením čísla s daným počtom platných číslic (znakov mantisy) a veľkým rozsahom rádu čísla, čo umožňuje reprezentovať veľmi veľké aj veľmi malé čísla v absolútnych číslach. hodnotu. Vzhľadom na približnú reprezentáciu údajov reálneho typu, ich je nesprávne porovnávať pre rovnosť.

V moderných implementáciách univerzálnych programovacích jazykov zvyčajne existuje niekoľko celých čísel a niekoľko reálnych typov, z ktorých každý je charakterizovaný veľkosťou pamäte pridelenej pre jednu hodnotu a podľa toho rozsahom hodnôt čísel a pre skutočné typy - a jej presnosť (počet číslic mantisy).

Údaje typ postavy nadobúdať hodnoty na celej množine znakov povolených pre daný počítač. Jeden bajt je pridelený na uloženie hodnoty jedného znaku, kódovanie znakov sa vykonáva v súlade so štandardnou kódovacou tabuľkou (zvyčajne ASCII).

V C existujú 4 základné typy:

char- typ postavy;

int- celý typ

plavák- skutočný typ s jednoduchou presnosťou,

dvojitý- skutočný typ s dvojitou presnosťou.

Ak chcete špecifikovať odvodené typy, použite kvalifikácie:krátky(krátke) – používa sa s typom int,dlhý(dlhá) - používa sa s typmi int a dvojitý;podpísaný(podpísané), nepodpísané(bez znamienka) - použiteľné pre akýkoľvek typ celého čísla. Pri absencii slova unsigned sa hodnota považuje za podpísanú, t.j. e) Predvolená hodnota je podpísaná. Vzhľadom na prípustnosť ľubovoľnej kombinácie kvalifikátorov a názvov základných typov môže mať jeden typ viacero označení. Informácie o štandardných typoch C sú uvedené v tabuľkách 1 a 2. Deskriptory-synonymá sú uvedené v bunkách prvého stĺpca oddelené čiarkami.

Tabuľka 1. Štandardné celočíselné typy údajov C

Dátový typ

Rozsah hodnôt

char, podpísaný char

unsigned int, unsigned

int, signed int, short int, short

2147483648...2147483647

Je zaujímavé, že v C môže byť typ char použitý ako typ znaku alebo ako typ celého čísla, v závislosti od kontextu.

Tabuľka 2. Štandardné typy skutočných údajov C

Komentujte. Na napísanie programov pre prvú časť manuálu potrebujeme hlavne dva typy:plavákaint.

odpoveď:
  1. Typy celočíselných údajov:

short int , unsigned short int , int , unsigned int , long , unsigned long .

  1. Typy údajov s pohyblivou rádovou čiarkou (zodpovedajúce skutočným typom):

plavák , dvojitý , dlhý dvojitý .

  1. Typ údajov znaku:

char (signed char ), unsigned char, wchar_t .

  1. Booleovský typ údajov:

bool .

  1. Vyčíslený typ údajov (zavedený vo Visual C++):

enum.

2. Aké sú vlastnosti používania celočíselných dátových typov?

V C++ sú hlavné celočíselné dátové typy: short int , unsigned short int , int , unsigned int , long (long int ), unsigned long (unsigned long int ).

Tieto dátové typy predstavujú hodnoty z množiny celých čísel. Napríklad:

2 -100 398

Typy údajov, ktoré začínajú predponou bez znamienka, môžu obsahovať iba kladné čísla.

Údaje typu short int, unsigned short int zaberajú polovicu pamäte ako údaje typu int, unsigned int.

Údaje typu long, unsigned long zaberajú dvakrát toľko miesta v pamäti ako údaje typu int, unsigned int.

3. Ako opísať premennú s názvom x celočíselného typu v programe?

odpoveď:
intx; // celé číslo so znamienkom

V dôsledku toho pod premennou X Budú alokované 4 bajty pamäťového priestoru. Množstvo pamäte pridelenej premennej závisí od vlastností počítača, typu operačného systému a nastavení kompilátora.

4. Ako zapísať číslo 239 do premennej celočíselného typu?

Na to slúži operátor priradenia, ktorý je označený symbolom '='.

odpoveď 1. Vloženie čísla do premennej po jej deklarácii.

intx; x = 239;

odpoveď 2. Vloženie čísla do premennej pri jej deklarácii (počiatočná inicializácia).

int x = 239;

5. Aké sú charakteristiky dátových typov s pohyblivou rádovou čiarkou?

Dátové typy s pohyblivou rádovou čiarkou vám umožňujú reprezentovať hodnoty z množiny reálnych čísel. Napríklad:

8.35 -990.399 239.0.

C++ má nasledujúce základné typy údajov s pohyblivou rádovou čiarkou:

plavák , dvojitý , dlhý dvojitý .

Premenná typu double zaberá 2-krát viac miesta v pamäti počítača ako premenná typu float.

Taktiež premenná typu long double zaberá 2-krát viac miesta v pamäti počítača ako premenná typu double .

6. Ako opísať premennú, ktorá nadobúda hodnotu s pohyblivou rádovou čiarkou?

Príklad deklarácie premenných float , double , long double:

plavák f; dvojité d; dlhý dvojitý ld;

7. Ako zapísať číselné hodnoty do premennej s pohyblivou rádovou čiarkou?

Príklad zadávania číselných údajov do premenných typov s pohyblivou rádovou čiarkou:

float f = -9928,45; // inicializácia dvojité d; dlhý dvojitý ld; d = 0,445332; // operátor priradenia ld = 3892923898239,030903; // operátor priradenia

8. Ako previesť premennú typu float na typ int?

Na tento účel sa používa typové odlievanie. V zátvorkách je potrebné uviesť názov typu, na ktorý sa vykonáva obsadenie.

plavák a; intb; a = 8,457; b = (int) a; // b = 8

Pri používaní operácií pretypovania musíte vziať do úvahy obmedzenia, ktoré platia pre typy, ktoré zaberajú menej miesta v pamäti počítača.

Napríklad premenná typu short int môže predstavovať menší rozsah čísel ako premenné typu float , double . Nasledujúci zoznam presahuje hodnotu v premennej typu short int:

krátke int i; plavák f; f = 3990099,8; i = (int)f; // i = -7597 - pretečenie

9. Ako previesť premennú z typu int na typ double?

Príklad pretypovania z int na double :

int i; dvojité d; i = 982; d = (dvojitý )i; // d = 982,0

10. Aké sú vlastnosti používania údajov typu char (znakové údaje) v programe?

Údaje typu char predstavujú znakovú hodnotu kódu zadávaného z klávesnice. Kód znaku je celé číslo.

Napríklad kód znaku „f“ sa rovná hodnote 102 .

Fragment kódu, v ktorom sa vypočíta kód znaku:

intcode; znakový symbol; symbol = "f" ; kód = (int )symbol; // kód = 102

Údaje typu char sú rovnaké celé čísla. Dáta typu char zaberajú 1 bajt v pamäti počítača.

Vzťah medzi znakmi a kódom sa nachádza v tabuľke znakov systému Windows. Kódy znakov 0 až 127 sú znaky vyhradené systémom BIOS. Zahŕňajú najčastejšie používané symboly, číslicové symboly, symboly latinskej abecedy. Tieto znaky nie je možné zmeniť.

Znaky s kódmi od 128 do 255 sú regionálne znaky, ktoré sú viazané na konkrétnu abecedu počítača, na ktorom je nainštalovaný operačný systém Windows.

11. Aké sú vlastnosti používania dátového typu bool (booleovský typ)?

Boolove premenné môžu nadobúdať iba dve hodnoty:

pravda,

falošný — falošný.

Tieto premenné sa používajú na testovanie boolovských výrazov. Číselná hodnota true je 1. Číselná hodnota false je 0 .

Útržok kódu, ktorý určuje číselné hodnoty true a false :

int výsledok; bool b; vysledok = (int )pravda ; // výsledok = 1 b = nepravda vysledok = (int )b; //výsledok = 0

Útržok kódu, ktorý prevádza typy int a float na bool :

int i; plavák f; bool b; i = 6; b = (bool )i; // b=Pravda f = 0,0; b = (bool)f; // b=false

12. Ako určiť množstvo pamäte obsadenej premennou daného typu?

Na tento účel sa používa operácia sizeof().

Útržok kódu, ktorý určuje veľkosť niektorých typov údajov:

int d; d = sizeof(char); // d = 1 d = sizeof(unsigned int ); // d = 4 d = sizeof(float); // d = 4 d = sizeof(double); // d = 8

13. Ako sa inicializujú premenné rôznych typov?

int d = 28; float z = (float )2,85; char c = "k" ; Reťazec ^s = "Ahoj!" ; dvojité r = -8,559;

14. Ako určiť maximálnu prípustnú (minimálne prípustnú) hodnotu premennej určitého typu?

Knižnica .NET Framework používa vlastnosti MaxValue a MinValue na určenie maximálnej alebo minimálnej prípustnej hodnoty pre premennú nejakého typu.

Príklady definovania limitných hodnôt pre premenné rôznych typov.

Pre premenné typu int:

// zadajte int int i; dlhý MaxInt; dlhá MinInt; MaxInt = (dlhá )i.MaxValue; // MaxInt = 2147483647 MinInt = (dlhá )i.MinValue; // MinInt = -2147483648

Pre premenné typu short int:

// zadajte krátky int krátke int si; int MaxInt; int MinInt; MaxInt = (int )si.MaxValue; // MaxInt = 32767 MinInt = (int )si.MinValue; // MinInt = -32768

Pre premenné typu unsigned int:

// napíšte unsigned int nesignované intui; unsigned int MaxInt; unsigned int MinInt; MaxInt = ui.MaxValue; // MaxInt = 4294967295 MinInt = ui.MinValue; // MinInt = 0

Pre plávajúce premenné:

// typ float plavák f; plavák MaxF; plavák MinF; MaxF = f.MaxValue; // MaxF = 3,402823E+38 MinF = f.MinValue; // MinF = -3,402823E+38

Pre premenné typu double:

// dvojitý typ dvojité d; dvojité MaxD; dvojitá MinD; Max = d.MaxValue; // Max = 1,79769313486232E+308 Min = d.MinValue; // Min = -1,79769313486232E+308

Pre premenné typu char:

// zadajte char char c; int MaxC; int MinC; Max = (int )c.MaxValue; // Max = 127 Min = (int )c.MinValue; // Min = -128

15. Aké sú vlastnosti používania typu enum?

Enum typ je enumerovaný dátový typ. Špecifikuje mnemotechnické hodnoty pre množiny celočíselných hodnôt. Každá mnemotechnická hodnota má špecifický obsah a je reprezentovaná celým číslom.

Príklad použitia typu enum na označenie mesiacov v roku:

vyčísliť mesiace ( január, február, marec, apríl, máj, jún, júl, august, september, október, november, december) mn; mn = január; // mn = 0 mn = marec; // mn = 2 mn = september; // mn = 8

Vyššie uvedený príklad definuje premennú s názvom mn typu enum months . Mnemotechnické hodnoty pre mesiace (január, február, ...) začínajú na 0 (0, 1, 2, ...). Mnemotechnická hodnota Január zodpovedá celočíselnej hodnote 0 , mnemotechnická hodnota Február zodpovedá celočíselnej hodnote 1 atď.

Takže pomocou typu enum môžete použiť mnemotechnický zápis v texte programu pre lepšiu prehľadnosť zdrojového kódu.

Môžete písať aj takto:

mn = (počet mesiacov)2; // mn = marec mn = (počet mesiacov)11; // mn = december

16. Aké sú vlastnosti typu aplikácieneplatné v programoch preC++ ?

Typ údajov void sa používa v nasledujúcich prípadoch:

  • ak potrebujete opísať funkciu, ktorá nevracia žiadnu hodnotu (pozri príklad);
  • ak potrebujete opísať funkciu, ktorá neprijíma parametre (pozri príklad).

Príklad. Funkcia MyFun() bez parametrov, ktorá nevracia žiadnu hodnotu (vracia typ void) a neberie žiadne parametre.

public : void MyFun(void) { // telo funkcie // ... návrat; // návrat z funkcie, ktorá nevracia hodnotu } // volanie funkcie z programu ... Moja zábava(); ...

17. Je možné deklarovať premennú typu?neplatné v programe?

Nemôžete, pretože typ void nie je spojený s hodnotou.

Deklarovanie premennej typu void má za následok chybu kompilácie s nasledujúcou správou:

"Nezákonné použitie typu void"

18. Aké sú vlastnosti typu aplikáciewchar_ t vVizuálne C++ ?

Premenné typu char (pozri predchádzajúce odseky) sa používajú na ukladanie 8-bitových znakov ASCII.

Typ wchar_t sa používa na ukladanie znakov, ktoré sú súčasťou veľkých znakových sád. Napríklad čínska abeceda má obrovské množstvo znakov. 8 číslic nestačí na vyjadrenie celej znakovej sady čínskej abecedy. Preto, ak chcete program používať na medzinárodnom trhu, je vhodné nahradiť typ char wchar_t .

Príklad pomocou typu wchar_t.

... wchar_tt; // premennej t sú pridelené 2 bajty pamäte t = "s"; ...

Typ celého čísla (int)

Veľkosť typu int nie je definovaný štandardom, ale závisí od počítača a kompilátora.

Pre 16-bitový procesor sú pre hodnoty tohto typu alokované 2 bajty,

pre 32-bit - 4 bajty.

špecifikátor krátky pred názvom typu znamená pre kompilátor, že pre číslo sú potrebné 2 bajty, bez ohľadu na bitovú rýchlosť procesora.

špecifikátor dlhý znamená, že celočíselná hodnota bude trvať 4 bajty.

Na 16-bitovom počítači teda ekvivalenty int a short int,

a na 32-bit, int a long int.

Vnútorné zastúpenie hodnoty typu integer - celé číslo v binárnom kóde. Pri použití špecifikátora podpísaný najvýznamnejší bit čísla je interpretovaný ako znamienko (0 - kladné číslo, 1 - záporné). špecifikátor nepodpísané umožňuje reprezentovať iba kladné čísla, pretože najvýznamnejší bit sa považuje za súčasť číselného kódu. Rozsah hodnôt typu int teda závisí od špecifikátorov. Rozsahy hodnôt hodnôt celočíselného typu s rôznymi špecifikátormi pre počítače kompatibilné s IBM PC sú uvedené v tabuľke "Rozsahy hodnôt jednoduchých dátových typov".

V predvolenom nastavení sa všetky typy celých čísel považujú za podpísané, čo znamená, že špecifikátor so znamienkom možno vynechať.

Konštantám, ktoré sa vyskytujú v programe, je priradený jeden alebo druhý typ podľa ich typu. Ak by to programátorovi z nejakého dôvodu nevyhovovalo, môžete požadovaný typ výslovne špecifikovať pomocou koncoviek L, l (dlhý) a U, u (bez znamienka). Napríklad konštanta 32L bude typu long a zaberie 4 bajty. Prípony L a U môžete použiť súčasne, napríklad 0x22UL alebo 05Lu.

Poznámka. Typy short int, long int, signed int a unsigned int možno skrátiť na short, long, signed a unsigned.

Typ znaku (char)

Hodnota typu znaku je počet bajtov dostatočný na umiestnenie akéhokoľvek znaku zo znakovej sady pre daný počítač, ktorý viedol k názvu typu. Zvyčajne je to 1 bajt. Typ char, podobne ako iné celočíselné typy, môže byť podpísaný alebo bez znamienka. Hodnoty so znamienkom môžu ukladať hodnoty v rozsahu -128 až 127. Pri použití špecifikátora bez znamienka môžu byť hodnoty v rozsahu 0 až 255. To stačí na uloženie ľubovoľného znaku v 256-znakovej sade znakov ASCII . hodnoty char sa používajú aj na ukladanie celých čísel.



Rozšírený typ znaku (wchar_t)

Typ wchar_t navrhnutý tak, aby pracoval so sadou znakov na kódovanie, ktoré nestačí na 1 bajt. Napríklad Unicode. Veľkosť tohto typu závisí od implementácie; zvyčajne zodpovedá typu krátky. Reťazcové konštanty typu wchar_t sa zapisujú s predponou L, napríklad L“Gates“.

boolovský typ (bool)

Booleovské hodnoty môžu nadobúdať iba hodnoty pravda a falošné, čo sú vyhradené slová. Vnútorná reprezentácia nepravdy je 0 (nula). Akákoľvek iná hodnota sa interpretuje ako pravdivá. Pri prevode na celočíselný typ pravda má hodnotu 1.

Typy s pohyblivou rádovou čiarkou (plávajúca, dvojitá a dlhá dvojitá)

Štandard C++ definuje tri typy údajov na ukladanie skutočných hodnôt: float, double a long double.

Dátové typy s pohyblivou rádovou čiarkou sú v pamäti uložené inak ako celočíselné dátové typy. Vnútorná reprezentácia reálneho čísla pozostáva z dvoch častí - mantisa a objednať.

Na počítačoch kompatibilných s IBM PC sú hodnoty ako plavák zaberajú 4 bajty, z ktorých je jeden bit alokovaný v znamení mantisy, 8 číslic podľa objednávky a 23 pod mantisou. Mantisa je číslo väčšie ako 1,0, ale menšie ako 2,0. Keďže najvyššia číslica mantisy je vždy 1, neukladá sa.

Pre hodnoty typu dvojitý, zaberá 8 bajtov, 11 a 52 bitov je alokovaných pre príkaz a mantisu, v tomto poradí. Dĺžka mantisy určuje presnosť čísla, zatiaľ čo dĺžka exponentu určuje jeho rozsah. Ako môžete vidieť z tabuľky na konci záznamu, pri rovnakom počte bajtov pridelených pre float a long int hodnoty sa rozsahy ich platných hodnôt značne líšia kvôli forme interného zastúpenia.

špecifikátor dlhý pred názvom typu dvojitý označuje, že pre jeho hodnotu je pridelených 10 bajtov.

Konštanty s pohyblivou rádovou čiarkou sú štandardne typu double. Typ konštanty môžete explicitne určiť pomocou prípon F, f (float) a L, l (long).

Napríklad konštanta 2E+6L by bola typu long double a konštanta 1,82f by bola typu float.

Pri písaní programov, ktoré sú univerzálne pre rôzne platformy, nemôžete robiť predpoklady o veľkosti typu int. Na jeho získanie je potrebné použiť operátor sizeof, ktorý vráti veľkosť typu v bajtoch.

Napríklad v operačnom systéme MS-DOS bude sizeof(int) výsledkom 2 a v systéme Windows 98 alebo OS/2 bude výsledkom 4.

Norma ANSI nešpecifikuje rozsahy hodnôt pre hlavné typy, sú definované iba pomery medzi ich veľkosťami, napríklad:

sizeof(float) ≤ slzeof(double) ≤ sizeof(long double)
sizeof(char) ≤ slzeof(short) ≤ sizeof(int) ≤ sizeof(long)

Poznámka. Minimálne a maximálne povolené hodnoty pre celočíselné typy závisia od implementácie a sú uvedené v hlavičkovom súbore (), charakteristika reálnych typov - v súbore (), ako aj v šablóne triedy numeric_limits

prázdny typ

Okrem uvedených je typ void jedným z hlavných typov jazyka, ale množina hodnôt tohto typu je prázdna. Používa sa na definovanie funkcií, ktoré nevracajú hodnotu, na špecifikovanie prázdneho zoznamu argumentov funkcie ako základného typu pre ukazovatele a pri operáciách pretypovania.

Zavádzajú sa rôzne typy celočíselných a reálnych typov, ktoré sa líšia rozsahom a presnosťou reprezentácie údajov, aby programátor mohol čo najefektívnejšie využívať možnosti konkrétneho hardvéru, pretože rýchlosť výpočtov a množstvo pamäte závisia od výber typu. Program optimalizovaný pre jeden typ počítača sa však môže stať neprenosným na iné platformy, takže vo všeobecnosti je potrebné vyhnúť sa závislostiam na špecifických charakteristikách typov údajov.

Typ Rozsah hodnôt Veľkosť (bajt)
bool pravda a nepravda
podpísaný char -128 … 127
nepodpísaný char 0 … 255
podpísané krátke int -32 768 … 32 767
unsigned short int 0 … 65 535
podpísané dlhé int -2 147 483 648 … 2 147 483 647
unsigned long int 0 … 4 294 967 295
plavák 3,4e-38 … 3,4e+38
dvojitý 1,7e-308 … 1,7C+308
dlhý dvojitý 3,4e-4932 … 3,4e+4932

Štruktúra programu

Program C++ pozostáva z funkcie, popisy a direktívy preprocesora. Jedna z funkcií musí byť pomenovaná Hlavná. Vykonávanie programu začína prvým príkazom tejto funkcie. Najjednoduchšia definícia funkcie má nasledujúci formát:

Funkcia sa spravidla používa na výpočet nejakej hodnoty, takže jej typ je uvedený pred názvom funkcie. Nižšie sú uvedené najdôležitejšie informácie o funkciách:

  • ak funkcia nemá vracať hodnotu, zadá sa typ void:
  • telo funkcie je blok, a preto je uzavreté v zložených zátvorkách;
  • funkcie nemožno vnoriť;
  • každý príkaz končí bodkočiarkou (okrem zloženého príkazu).

Príklad programovej štruktúry obsahujúcej funkcie main, fl a f2:

Program môže pozostávať z niekoľkých modulov(zdrojové súbory).

Poznámky k I/O v C++

Jazyk C++ nemá žiadne vstavané vstupno-výstupné zariadenia – vykonáva sa pomocou funkcií, typov a objektov obsiahnutých v štandardných knižniciach.

Používajú sa dve metódy: funkcie zdedené z jazyka C a objekty C++.

Základné I/O funkcie v štýle C:

int scanf (formát const char*, ...) // vstup
int printf(formát const char*, ...) // výstup

Vykonávajú formátovaný vstup a výstup ľubovoľného počtu hodnôt podľa formátovacieho reťazca. Formátovací reťazec obsahuje znaky, ktoré sa skopírujú do streamu (na obrazovke) alebo vyžiadajú zo streamu (z klávesnice) pri vstupe, a špecifikácie prevodu, ktoré začínajú znakom %, ktoré sú nahradené špecifickými hodnotami pri vstupe a výkon.

Príklad programu využívajúci I/O funkcie v štýle C:

#include
int main() (
int i;
printf("Zadajte celé číslo\n");
scanf("%d", &i);
printf("Zadali ste číslo %d, ďakujem!", i);
návrat 0;
}

Prvý riadok tohto programu je direktíva preprocesora, podľa ktorej sa do textu programu vkladá hlavičkový súbor obsahujúci popis vstupno/výstupných funkcií použitých v programe (v tomto prípade sú prvkom jazyka lomené zátvorky) . Všetky príkazy preprocesora začínajú znakom #.

Tretí riadok je popis premennej celočíselného typu s názvom i.

Funkcia printf na štvrtom riadku vypíše výzvu "Zadajte celé číslo" a preskočí na nový riadok podľa \n escape sekvencie. Funkcia scanf ukladá celé číslo zadané z klávesnice do premennej i (znamienko & znamená operáciu získania adresy) a nasledujúci príkaz zobrazí v ňom zadaný reťazec, pričom špecifikáciu prevodu nahradí hodnotou tohto čísla.

Program využívajúci knižnicu tried C++:

#include
int main() (
int i;
cout<< "Введите целое число\n"; cin >> i;
cout<< "Вы ввели число " << i << ", спасибо!";
návrat 0;
}

Hlavičkový súbor obsahuje popis množiny tried na riadenie vstupu/výstupu. Definuje štandardné prúdové objekty cin pre vstup z klávesnice a cout na zobrazenie na obrazovke, ako aj na operácie streamovania< < и чтения из потока >>.

Môžete použiť oba spôsoby organizácie vstupu / výstupu, ale neodporúča sa ich miešať v jednom programe.