Internet

C je maximální hodnota typu. Datové typy v jazyce C

C je maximální hodnota typu.  Datové typy v jazyce C

Proměnné se používají k ukládání různých dat v programovacích jazycích. Proměnná je oblast paměti, která má název, jinak nazývaný identifikátor.

Zadáním názvu proměnné programátor zároveň pojmenuje paměťovou oblast, kde budou hodnoty proměnné zapsány pro uložení.

Dobrým stylem je pojmenovávat proměnné smysluplně. Je povoleno používat malá a velká písmena, čísla a podtržítko, které je v C považováno za písmeno. První znak musí být písmeno a v názvu proměnné nesmí být žádné mezery. V moderních verzích překladačů je délka názvu prakticky neomezená. Název proměnné nemůže odpovídat vyhrazeným klíčovým slovům. Velká a malá písmena v názvech proměnných jsou různá, proměnné A A A- různé proměnné.

Vyhrazená klíčová slova auto double int struct break else long switch register tupedef char extern return void case float unsigned výchozí pro podepsané spojení udělat if sizeof volatile continue enum short while
V C musí být deklarovány všechny proměnné. To znamená, že za prvé musíte na začátku každého programu nebo funkce poskytnout seznam všech použitých proměnných a za druhé uvést typ každé z nich.

Když je proměnná deklarována, kompilátor jí přidělí paměťový prostor v závislosti na jejím typu. Pomocí standardních nástrojů AVR GCC pracuje s datovými typy char(typ postavy) a int(celočíselný typ).

Variabilní typy

Zadejte char

char- je nejekonomičtějším typem. Typ znaku může být podepsaný nebo nepodepsaný. V souladu s tím označeno jako „ podepsaný char" (podepsaný typ) a " nepodepsaný char" (typ bez znaménka). Typ se znaménkem může ukládat hodnoty v rozsahu od -128 do +127. Bez znaménka - od 0 do 255. Proměnná char má 1 bajt paměti (8 bitů).

Klíčová slova (modifikátory) podepsaný A nepodepsaný indikují, jak je interpretován nulový bit deklarované proměnné, tj. pokud je specifikováno klíčové slovo bez znaménka, pak je nulový bit interpretován jako část čísla, jinak je nulový bit interpretován jako se znaménkem.

Zadejte int

Celočíselná hodnota int Možná krátký(krátký) nebo dlouho(dlouho).

Klíčové slovo (modifikátor) krátký umístěno za klíčovými slovy podepsaný nebo nepodepsaný. Rozlišují se tedy následující typy: podepsané short int, unsigned short int, sign long int, unsigned long int.

Zadejte proměnnou podepsané krátké int(krátké celé číslo se znaménkem) může nabývat hodnot od -32768 do +32767, unsigned short int(krátké celé číslo bez znaménka) - od 0 do 65535. Každému z nich jsou přiděleny přesně dva bajty paměti (16 bitů).

Při deklaraci proměnné typu podepsané krátké int klíčová slova podepsaný A krátký lze vynechat a takový typ proměnné lze jednoduše deklarovat int. Tento typ je také možné deklarovat jedním klíčovým slovem krátký.

Variabilní unsigned short int lze prohlásit jako nepodepsaný int nebo nepodepsaný krátký.

Pro každou velikost podepsáno dlouhé int nebo unsigned long int Jsou přiděleny 4 bajty paměti (32 bitů). Hodnoty proměnných tohoto typu mohou být v rozsahu od -2147483648 do 2147483647 a od 0 do 4294967295.

Existují také proměnné jako dlouhý dlouhý int, pro které je alokováno 8 bajtů paměti (64 bitů). Mohou být také podepsané nebo nepodepsané. Pro podepsaný typ je rozsah hodnot od -9223372036854775808 do 9223372036854775807, pro nepodepsaný typ - od 0 do 18446744073709551615. Podepsaný typ lze deklarovat jednoduše dvěma klíčovými slovy dlouhý dlouhý.

Typ Rozsah Hexadecimální rozsah Velikost
nepodepsaný char 0 ... 255 0x00...0xFF 8 bitů
podepsaný char
nebo jednoduše
char
-128 ... 127 -0x80...0x7F 8 bitů
unsigned short int
nebo jednoduše
nepodepsaný int nebo nepodepsaný krátký
0 ... 65535 0x0000 ... 0xFFFF 16 bit
podepsané krátké int nebo podepsané int
nebo jednoduše
krátký nebo int
-32768 ... 32767 0x8000...0x7FFF 16 bit
unsigned long int
nebo jednoduše
nepodepsané dlouhé
0 ... 4294967295 0x00000000 ... 0xFFFFFFFF 32 bit
podepsané dlouhé
nebo jednoduše
dlouho
-2147483648 ... 2147483647 0x80000000 ... 0x7FFFFFFF 32 bit
nepodepsané dlouhé dlouhé 0 ... 18446744073709551615 0x0000000000000000 ... 0xFFFFFFFFFFFFFFFF 64 bit
podepsané dlouho dlouhé
nebo jednoduše
dlouhý dlouhý
-9223372036854775808 ... 9223372036854775807 0x8000000000000000 ... 0x7FFFFFFFFFFFFFFFF 64 bit

Proměnné jsou deklarovány v deklaračním příkazu. Příkaz deklarace se skládá ze specifikace typu a seznamu názvů proměnných oddělených čárkami. Na konci musí být středník.

Deklarace proměnné má následující formát:

[modifikátory] type_specifier identifikátor [, identifikátor] ...

Modifikátory- klíčová slova podepsaný, nepodepsaný, krátký, dlouho.
Specifikátor typu- klíčové slovo char nebo int, který určuje typ deklarované proměnné.
Identifikátor- název proměnné.

Příklad: char x; int a, b, c; bez znaménka dlouhé dlouhé y;
Tímto způsobem budou deklarovány proměnné X, A, b, C, y. Do proměnné X bude možné zapisovat hodnoty od -128 do 127. V proměnných A, b, C- od -32768 do +32767. Do proměnné y- od 0 do 18446744073709551615.

Inicializace hodnoty proměnné při deklaraci

Při deklaraci lze proměnnou inicializovat, to znamená, že jí lze přiřadit počáteční hodnotu. Můžete to udělat následovně. int x = 100; Tedy do proměnné X Při ohlášení se číslo 100 okamžitě zapíše.

Je lepší se vyhnout smíchání inicializovaných proměnných v jednom deklaračním příkazu, to znamená, že je lepší deklarovat inicializované proměnné na samostatných řádcích.

Konstanty

Proměnná libovolného typu může být prohlášena za nemodifikovatelnou. Toho je dosaženo přidáním klíčového slova konst ke specifikátoru typu. Proměnné s typem konst jsou data pouze pro čtení, což znamená, že proměnné nelze přiřadit novou hodnotu. Pokud po slově konst Pokud neexistuje žádný specifikátor typu, pak se s konstantami zachází jako s hodnotami se znaménkem a je jim přiřazen typ int nebo dlouhá int podle hodnoty konstanty: pokud je konstanta menší než 32768, pak je jí přiřazen typ int, v opačném případě dlouhá int.

Příklad: const long int k = 25; const m = -50; // implikovaná const int m=-50 const n = 100 000; // implikovaná const long int n=100000

Úkol

Znak "=" se používá pro přiřazení v C. Vyhodnotí se výraz napravo od přiřazovacího znaku a výsledná hodnota se přiřadí proměnné nalevo od přiřazovacího znaku. V tomto případě je předchozí hodnota uložená v proměnné vymazána a nahrazena novou.

Operátor "=" by neměl být chápán jako rovnost.
Například výraz a = 5; je třeba číst jako "přiřadit proměnnou a až 5".

Příklady: x = 5 + 3; // sečte hodnoty 5 a 3, // výsledek přiřadí do proměnné x (zapíše do proměnné x) b = a + 4; // k hodnotě uložené v proměnné a přidáme 4, // výsledný výsledek přiřadíme do proměnné b (zapíšeme do proměnné b) b = b + 2; // k hodnotě uložené v proměnné b přičteme 2, // výsledný výsledek přiřadíme do proměnné b (zapíšeme do proměnné b)
Na pravé straně lze hodnotu proměnné použít vícekrát: c = b * b + 3 * b;

Příklad: x = 3; // proměnné x bude přiřazena hodnota 3 y = x + 5; // k hodnotě uložené v proměnné x se přičte číslo 5, // výsledný výsledek se zapíše do proměnné y z = x * y; // hodnoty proměnných x a y se vynásobí, // výsledek se zapíše do proměnné z z = z - 1; // 1 se odečte od hodnoty uložené v proměnné z // výsledek se zapíše do proměnné z
Tedy v proměnné zčíslo 23 bude uloženo

Kromě jednoduchého operátoru přiřazení "=" existuje v C několik dalších kombinovaných operátorů přiřazení: "+=", "-=", "*=
Příklady: x += y; // stejné jako x = x + y; - sečtěte x a y // a výsledek zapište do proměnné x x = y; // stejné jako x = x - y; - odečtěte hodnotu y od x // a výsledek zapište do proměnné x x *= y; // stejné jako x = x * y; - vynásobte x y // a výsledek zapište do proměnné x x /= y; // stejné jako x = x / y; - vydělte x y // a výsledek zapište do proměnné x x %= y; // stejné jako x = x % y; // vypočítejte celočíselný zbytek při dělení x y // a výsledek zapište do proměnné x

Zvyšování a snižování

Pokud potřebujete změnit hodnotu proměnné na 1, použijte přírůstek nebo dekrementovat.

Přírůstek- operace zvýšení hodnoty uložené v proměnné o 1.

Příklad: x++; // hodnota proměnné x se zvýší o 1$WinAVR = ($_GET["avr"]); if($WinAVR) include($WinAVR);?>
Dekrementovat- operace snížení hodnoty uložené v proměnné o 1.

Příklad: x--; // hodnota proměnné x se sníží o 1
Inkrementace a dekrementace jsou operátory přiřazení. Při použití dekrementace a inkrementace spolu s operátorem přiřazení "=" použijte zápis s příponou (x++) nebo předponou (++x). Nejprve se provede zadání prefixu.

Příklady: y = x++;
Předpokládejme, že v proměnné X byla uložena hodnota 5. Poté v y zapíše se hodnota 5, za kterou hodnota proměnné X se zvýší o 1. Tedy v y bude 5 a v X- 6. y = --x;
Pokud v X Pokud byla uložena hodnota 5, bude nejprve provedeno snížení X do 4 a poté bude tato hodnota přiřazena proměnné y. Tím pádem, X A y bude přiřazena hodnota 4.

Kromě rozdělení dat na proměnné a konstanty existuje klasifikace dat podle typu. Popis proměnných spočívá především v deklaraci jejich typu. Datový typ charakterizuje rozsah jeho hodnot a formu reprezentace v paměti počítače. Každý typ je charakterizován sadou operací prováděných s daty. Programovací jazyky pro všeobecné použití mají tradičně standardní typy, jako je celočíselné, reálné, znakové a logické 3 . Okamžitě si všimněme, že v C neexistuje žádný logický typ. Výraz (v konkrétním případě proměnná) je považován za pravdivý, pokud je nenulový, jinak je považován za nepravdivý.

Existence dvou číselných typů (integer a real) je spojena se dvěma možnými formami reprezentace čísel v paměti počítače.

Data celý typ uloženy ve formě prezentace pevný bod. Vyznačuje se absolutní přesností při reprezentaci čísel a provádění operací s nimi a také omezeným rozsahem číselných hodnot. Typ integer se používá pro data, která v zásadě nemohou mít zlomkovou část (počet lidí, aut atd., čísla a počítadla).

Napište skutečné odpovídá formě číselné reprezentace plovoucí bod, který se vyznačuje přibližným znázorněním čísla s daným počtem platných číslic (znaků mantisy) a velkým rozsahem řádu čísla, což umožňuje reprezentovat jak velmi velká, tak velmi malá čísla v absolutní hodnotě. Vzhledem k přibližné reprezentaci dat reálného typu, jejich je nesprávné porovnávat pro rovnost.

V moderních implementacích univerzálních programovacích jazyků obvykle existuje několik celočíselných a několik reálných typů, z nichž každý je charakterizován svou velikostí paměti alokované pro jednu hodnotu a podle toho rozsahem číselných hodnot a pro reálné typy - a svou přesností. (počet číslic mantisy).

Data typ postavy převzít hodnoty pro celou sadu znaků povolenou pro daný počítač. Pro uložení hodnoty jednoho znaku je přidělen jeden bajt, znaky jsou kódovány podle standardní kódovací tabulky (obvykle ASCII).

V C existují 4 základní typy:

char- typ postavy;

int- celý typ,

plovák- jediný přesný skutečný typ,

dvojnásobek- skutečný typ s dvojitou přesností.

Chcete-li definovat odvozené typy, použijte kvalifikátory:krátký(krátké) - používá se s typem int,dlouho(long) - používá se s typy int A dvojnásobek;podepsaný(se znakem), nepodepsaný(bez znaménka) - platí pro jakýkoli typ celého čísla. Při absenci slova unsigned se hodnota považuje za podepsanou, tzn. tj. výchozí hodnota je podepsána. Vzhledem k přípustnosti libovolné kombinace kvalifikátorů a názvů základních typů může mít jeden typ více označení. Informace o standardních typech C jsou uvedeny v tabulkách 1 a 2. Deskriptory synonym jsou uvedeny v buňkách prvního sloupce oddělené čárkami.

Tabulka 1. Standardní celočíselné datové typy C

Datový typ

Rozsah hodnot

char, podepsaný char

unsigned int, unsigned

int, sign int, short int, short

2147483648...2147483647

Zajímavé je, že v C lze typ char použít jako znak nebo jako celočíselný typ, v závislosti na kontextu.

Tabulka 2. Standardní typy reálných dat C

Komentář. K napsání programů pro první část manuálu budeme potřebovat hlavně dva typy:plovákAint.

V této lekci se to naučíte Abeceda jazyka C++, a také co typy dat program to umí zpracovat. Možná to není ten nejvzrušující moment, ale tato znalost je nezbytná! Navíc, když se začnete učit jakýkoli jiný programovací jazyk, projdete podobnou fází učení s větší jistotou. Program C++ může obsahovat následující symboly:

  • velká, malá písmena latinky A, B, C..., x, y, z a podtržítko;
  • arabské číslice od 0 do 9;
  • speciální znaky: ( ) , | , () + - / % * . \‘ : ?< > = ! & # ~ ; ^
  • znaky mezery, tabulátoru a nového řádku.

Při testování programu můžete použít komentáře. Pokud text obsahuje dvě lomítka // a končí znakem nového řádku nebo je uzavřen mezi znaky /* a */, kompilátor jej ignoruje.

Data v C++

K vyřešení problému jakýkoli program zpracovává nějaká data. Mohou být různých typů: celá a reálná čísla, znaky, řetězce, pole. V C++ jsou data obvykle popsána na začátku funkce. NA základní datové typy jazyky zahrnují:

Ke generování dalších typů dat, základních a tzv specifikátory. C++ definuje čtyři specifikátory datových typů:

  • krátký - krátký;
  • dlouhý - dlouhý;
  • podepsaný - podepsaný;
  • nepodepsaný - nepodepsaný.

Celočíselný typ

Zadejte proměnnou int v paměti počítače může zabírat 2 nebo 4 bajty. Záleží na bitové velikosti procesoru. Ve výchozím nastavení jsou všechny celočíselné typy považovány za podepsané, tedy za specifikátor podepsaný nemusí být specifikováno. Specifikátor nepodepsaný umožňuje reprezentovat pouze kladná čísla. Níže jsou uvedeny některé rozsahy hodnot typu integer

Typ Rozsah Velikost
int -2147483648…2147483647 4 byty
nepodepsaný int 0…4294967295 4 byty
podepsané int -2147483648…2147483647 4 byty
krátký int -32768…32767 2 bajty
dlouhá int -2147483648…2147483647 4 byty
unsigned short int 0…65535 2 bajty

Skutečný typ

Číslo s plovoucí desetinnou čárkou je reprezentováno ve tvaru mE +- p, kde m je mantisa (celé číslo nebo zlomkové číslo s desetinnou čárkou), p je exponent (celé číslo). Typicky hodnoty jako plovák zabírá 4 bajty a dvojnásobek 8 bajtů. Tabulka rozsahu skutečných hodnot:

plovák 3,4E-38…3,4E+38 4 byty
dvojnásobek 1,7E-308…1,7E+308 8 bajtů
dlouhý dvojitý 3.4E-4932…3.4E+4932 8 bajtů

Booleovský typ

Zadejte proměnnou bool může nabývat pouze dvou hodnot skutečný ( skutečný ) nebo fasle ( lhát ). Jakákoli hodnota nerovná nule je interpretována jako skutečný. Význam Nepravdivé reprezentováno v paměti jako 0.

typ void

Sada hodnot tohoto typu je prázdná. Používá se k definování funkcí, které nevrací hodnotu, k určení prázdného seznamu argumentů funkcí, jako základního typu pro ukazatele a při operacích přetypování.

Konverze datových typů

V C++ existují dva typy převodu datových typů: explicitní a implicitní.

  • Implicitní konverze se děje automaticky. Děje se tak při porovnávání, přiřazování nebo vyhodnocování výrazů různých typů. Například následující program vytiskne do konzole hodnotu jako plovák

#include "stdafx.h" #include pomocí jmenného prostoru std; int main() ( int i=5; float f=10,12; cout<>void"); návrat 0; )

#include "stdafx.h"

#zahrnout

pomocí jmenného prostoru std ;

int main()

int i = 5; plovoucí f = 10,12;

cout<< i / f ;

system ("pause>>void" ) ;

návrat 0;

Nejvyšší prioritu má typ, ve kterém je ztraceno nejmenší množství informací. Neměli byste zneužívat implicitní konverzi typu, protože mohou nastat různé nepředvídané situace.

  • Explicitní konverze na rozdíl od implicitního jej provádí programátor. Tuto konverzi lze provést několika způsoby:
  1. Převod na styly C: (plovoucí) a
  2. Převod na styly C++: plovák()

Typové odlévání lze také provádět pomocí následujících operací:

static_cast<>() const_cast<>() reinterpret_cast<>() dynamic_cast<> ()

static_cast<> ()

const_cast<> ()

reinterpret_cast<> ()

dynamic_cast<> ()

static_cas- převádí související datové typy. Tento operátor přetypuje typy podle obvyklých pravidel, což může být nezbytné, když kompilátor neprovádí automatickou konverzi. Syntaxe bude vypadat takto:

Zadejte static_cast<Тип>(objekt);

Pomocí static_cast nemůžete z proměnné odstranit stálost, ale může to udělat následující operátor. const_cast- používá se pouze v případě, že je nutné odstranit z předmětu stálost. Syntaxe bude vypadat takto:

Typconst_cast< Typ> (objekt);

reinterpret_cast- používá se k převodu různých typů, celého čísla na ukazatel a naopak. Pokud uvidíte nové slovo "index" - nelekejte se! Toto je také datový typ, ale v dohledné době s ním nebudeme pracovat. Syntaxe je zde stejná jako u dříve diskutovaných operátorů:

Typreinterpretovat_obsazení< Typ> (objekt);

dynamic_cast- používá se pro dynamickou konverzi typu, implementuje ukazatel nebo referenční lití. Syntax:

Typdynamický _obsazení< Typ> (objekt);

Řídící znaky

Některé z těchto „řídících postav“ již znáte (např \n). Všechny začínají zpětným lomítkem a jsou také obklopeny dvojitými uvozovkami.

obraz

Hexadecimální kód

název

Zvuk bzučáku

Vraťte se o krok zpět

Překlad stránky (formát)

Překlad řádků

Návrat vozíku

Horizontální tabulka

Vertikální záložka

Odpovědět:
  1. Celočíselné datové typy:

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

  1. Datové typy s pohyblivou řádovou čárkou (odpovídající reálným typům):

plovák, dvojitý, dlouhý dvojitý.

  1. Typ dat postavy:

char (signed char), unsigned char, wchar_t.

  1. Booleovský datový typ:

bool.

  1. Výčtový datový typ (zavedený ve Visual C++):

enum.

2. Jaké jsou vlastnosti použití celočíselných datových typů?

V C++ jsou hlavní celočíselné datové typy: short int, unsigned short int, int, unsigned int, long (long int), unsigned long (unsigned long int).

Tyto datové typy představují hodnoty ze sady celých čísel. Například:

2 -100 398

Datové typy, které začínají předponou bez znaménka, mohou obsahovat pouze kladná čísla.

Data typu short int, unsigned short int zabírají polovinu místa v paměti než data typu int, unsigned int.

Data typu long, unsigned long zabírají dvakrát více místa v paměti než data typu int, unsigned int.

3. Jak popsat proměnnou s názvem x celočíselného typu v programu?

Odpovědět:
int x; // celé číslo se znaménkem

V důsledku toho pod proměnnou X bude přidělen paměťový prostor o velikosti 4 bajtů. Velikost paměti přidělené proměnnou závisí na vlastnostech počítače, typu operačního systému a nastavení kompilátoru.

4. Jak zapsat číslo 239 do proměnné celočíselného typu?

K tomu použijte operátor přiřazení, který je označen symbolem ‚=‘.

Odpověď 1. Zadání čísla do proměnné po jejím popisu.

int x; x = 239;

Odpověď 2. Zadání čísla do proměnné při jejím popisu (počáteční inicializace).

int x = 239;

5. Jaké jsou vlastnosti datových typů s pohyblivou řádovou čárkou?

Datové typy s plovoucí desetinnou čárkou umožňují reprezentovat hodnoty ze sady reálných čísel. Například:

8.35 -990.399 239.0.

C++ má následující základní datové typy s pohyblivou řádovou čárkou:

plovák, dvojitý, dlouhý dvojitý.

Proměnná typu double zabírá v paměti počítače 2x více místa než proměnná typu float.

Dlouhá proměnná typu double také zabírá 2krát více místa v paměti počítače než proměnná typu double.

6. Jak popsat proměnnou, která nabývá hodnoty s pohyblivou řádovou čárkou?

Příklad popisu proměnných typu float, double, long double:

plovák f; dvojité d; dlouhý dvojitý ld;

7. Jak zapsat číselné hodnoty do proměnné s plovoucí desetinnou čárkou?

Příklad zadávání číselných údajů do proměnných s pohyblivou řádovou čárkou:

plovoucí f = -9928,45; // počáteční inicializace dvojité d; dlouhý dvojitý ld; d = 0,445332; // operátor přiřazení ld = 3892923898239,030903; // operátor přiřazení

8. Jak převést proměnnou float na typ int?

K tomu se používá operace typového lití. V závorkách musíte uvést název typu, na který se obsazení přenáší.

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

Při použití operací přetypování je třeba vzít v úvahu omezení, která platí pro typy, které zabírají méně místa v paměti počítače.

Například proměnná typu short int může představovat menší rozsah čísel než proměnné typu float nebo double. Následující výpis přetéká hodnotou v proměnné typu short int :

krátké int i; plovák f; f = 3990099,8; i = (int)f; // i = -7597 - přetečení

9. Jak převést proměnnou z typu int na typ double?

Příklad odlévání z int do double:

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

10. Jaké jsou vlastnosti použití znakových dat (znakových dat) v programu?

Data typu char představují hodnotu znaku kódu zadaného z klávesnice. Kód symbolu je celé číslo.

Například kód pro znak „f“ je 102.

Fragment kódu, který vypočítá kód znaku:

int kód; znak znaku; symbol = "f" ; kód = (int )symbol; // kód = 102

Data typu char jsou stejná celá čísla. Data typu char zabírají v paměti počítače 1 byte.

Vztah znak-kód je umístěn v tabulce symbolů Windows. Znaky s kódy od 0 do 127 jsou vyhrazené znaky systému BIOS. Zahrnují nejčastěji používané symboly, číselné symboly a latinské symboly. Tyto znaky nelze změnit.

Znaky s kódy od 128 do 255 jsou regionální znaky, které jsou vázány na konkrétní abecedu počítače, na kterém je nainstalován operační systém Windows.

11. Jaké jsou vlastnosti použití datového typu bool (logický typ)?

Proměnné typu bool mohou nabývat pouze dvou hodnot:

skutečná pravda,

falešný — falešný.

Tyto proměnné se používají k testování booleovských výrazů. Číselná hodnota true je 1. Číselná hodnota false je 0 .

Fragment kódu, který definuje číselné hodnoty true a false :

int výsledek; bool b; výsledek = (ne)pravda; // výsledek = 1 b = nepravda; výsledek = (int )b; // výsledek = 0

Fragment kódu, který převádí typy int a float na bool:

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

12. Jak určit velikost paměti obsazené proměnnou daného typu?

K tomu slouží operace sizeof().

Fragment kódu, který definuje velikost některých typů dat:

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

13. Jak se inicializují proměnné různých typů?

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

14. Jak určit maximální přípustnou (minimálně přípustnou) hodnotu proměnné určitého typu?

K určení maximální nebo minimální hodnoty pro proměnnou určitého typu používá knihovna .NET Framework vlastnosti MaxValue a MinValue.

Příklady stanovení mezních hodnot proměnných různých typů.

Pro proměnné typu int:

// zadejte int int i; dlouhý MaxInt; dlouhá MinInt; MaxInt = (long )i.MaxValue; // MaxInt = 2147483647 MinInt = (long )i.MinValue; // MinInt = -2147483648

Pro proměnné typu short int:

// napište short int krátké int si; int MaxInt; int MinInt; MaxInt = (int )si.MaxValue; // MaxInt = 32767 MinInt = (int )si.MinValue; // MinInt = -32768

Pro proměnné typu unsigned int:

// napište unsigned int unsigned int ui; unsigned int MaxInt; unsigned int MinInt; MaxInt = ui.MaxValue; // MaxInt = 4294967295 MinInt = ui.MinValue; // MinInt = 0

Pro proměnné typu float:

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

Pro proměnné typu double:

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

Pro proměnné typu char:

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

15. Jaké jsou vlastnosti použití typu enum?

Typ výčtu je datový typ výčtu. Určuje mnemotechnické hodnoty pro sady celočíselných hodnot. Každá mnemotechnická hodnota má specifický obsah a je reprezentována celým číslem.

Příklad použití typu enum k reprezentaci měsíců v roce:

výčtové měsíce ( leden, únor, březen, duben, květen, červen, červenec, srpen, září, říjen, listopad, prosinec) mn; mn = leden; // mn = 0 mn = březen; // mn = 2 mn = září; // mn = 8

Níže uvedený příklad popisuje proměnnou s názvem mn typu enum months. Mnemotechnické hodnoty pro měsíce (leden, únor, …) začínají od 0 (0, 1, 2, …). Lednová mnemotechnická pomůcka je celočíselná hodnota 0, únorová mnemotechnická pomůcka je celočíselná hodnota 1 a tak dále.

Takže pomocí typu enum lze v textu programu použít mnemotechnické pomůcky pro lepší přehlednost zdrojového kódu.

Můžete to také napsat takto:

mn = (výčet měsíců)2; // mn = březen mn = (výčet měsíců)11; // mn = prosinec

16. Jaké jsou vlastnosti typuprázdnota v programech zapnutoC++ ?

Datový typ void se používá v následujících případech:

  • pokud potřebujete popsat funkci, která nevrací žádnou hodnotu (viz příklad);
  • pokud potřebujete popsat funkci, která nepřijímá parametry (viz příklad).

Příklad. MyFun() je funkce bez parametrů, která nevrací žádnou hodnotu (vrací typ void ) a nebere žádné parametry.

public : void MyFun(void ) { // tělo funkce // ... vrátit se; // návrat z funkce, která nevrací hodnotu } // volání funkce z programu ... MyFun(); ...

17. Je možné deklarovat proměnnou typuprázdnota v programu?

To není možné, protože typ void není spojen s hodnotou.

Deklarování proměnné typu void způsobí chybu kompilace s následující zprávou:

"Nezákonné použití typu void"

18. Jaké jsou vlastnosti typuwchar_ t PROTIVizuální C++ ?

Proměnné typu char (viz předchozí odstavce) se používají k ukládání 8bitových znaků ASCII.

Typ wchar_t se používá k ukládání znaků, které jsou součástí velkých znakových sad. Například čínská abeceda má obrovské množství znaků. 8 číslic nestačí k reprezentaci celé sady čínských znaků. Pokud tedy potřebujete program používat na mezinárodním trhu, je vhodné nahradit typ char wchar_t.

Příklad pomocí typu wchar_t.

... wchar_t t; // Pro proměnnou t jsou přiděleny 2 bajty paměti t = "s"; ...

Tento cheat sheet poskytuje informace o hlavních datových typech programovacího jazyka C++ a vlastnostech jejich implementace. Na konci záznamu je také tabulka s rozsahy hodnot těchto typů.

Koncept datového typu

Hlavním účelem každého programu je zpracovávat data. Různé typy dat se ukládají a zpracovávají odlišně. V jakémkoli algoritmickém jazyce musí mít každá konstanta, proměnná, výraz nebo funkce specifický typ.

Datový typ definuje:

  • Interní reprezentace dat v počítačové paměti;
  • množina hodnot, které mohou veličiny tohoto typu nabývat;
  • operace a funkce, které lze aplikovat na veličiny tohoto typu.

Na základě těchto charakteristik programátor vybere typ každé veličiny použité v programu k reprezentaci skutečných objektů. Požadovaná deklarace typu umožňuje kompilátoru kontrolovat platnost různých programových konstrukcí. Typ hodnoty určuje strojové instrukce, které budou použity ke zpracování dat.

Všechny typy jazyka C++ lze rozdělit na základní A kompozitní . Jazyk C++ definuje šest hlavní datové typy reprezentující celočíselné, reálné, znakové a logické hodnoty. Na základě těchto typů může programátor zadat popis kompozitní typy. Patří mezi ně pole, výčty, funkce, struktury, odkazy, ukazatele, sjednocení a třídy.

Základní datové typy v C++

Základní (standardní) datové typy se často nazývají aritmetické, protože je lze použít v aritmetických operacích. Pro popis hlavních typů jsou definovány následující:

  1. int(int);
  2. char(char);
  3. wchar_t(widechar);
  4. bool(boolean);
  5. plovoucí (skutečný);
  6. double (double precision real).

První čtyři typy se nazývají integer ( Celý ), poslední dva - typy s plovoucí desetinnou čárkou . Kód, který kompilátor generuje pro zpracování celočíselných hodnot, se liší od kódu pro hodnoty s plovoucí desetinnou čárkou.

Jsou čtyři specifikátor typu , objasňující vnitřní reprezentaci a rozsah hodnot standardních typů:

  • krátký (krátký);
  • dlouhý (dlouhý);
  • podepsaný(podepsaný);
  • nepodepsaný.

Typ celého čísla (int)

Velikost typu int není definována standardem, ale závisí na počítači a kompilátoru. Pro 16bitový procesor jsou pro hodnoty tohoto typu přiděleny 2 bajty, pro 32bitový procesor - 4 bajty.

Krátký specifikátor před názvem typu indikuje kompilátoru, že číslu musí být přiděleny 2 bajty, bez ohledu na kapacitu procesoru. Specifikátor long znamená, že celočíselná hodnota bude zabírat 4 bajty. Takže na 16bitovém počítači jsou ekvivalenty int a short int a na 32bitovém počítači jsou ekvivalenty int a long int.

Vnitřní zastoupení hodnoty typu integer - celé číslo v binárním kódu. Při použití specifikátoru se znaménkem se nejvýznamnější bit čísla interpretuje jako se znaménkem (0 je kladné číslo, 1 je záporné číslo). Specifikátor bez znaménka umožňuje reprezentovat pouze kladná čísla, protože nejvýznamnější bit je považován za součást kódu čísla. Rozsah hodnot typu int tedy závisí na specifikátorech. Rozsahy hodnot hodnot typu integer s různými specifikátory pro počítače kompatibilní s IBM PC jsou uvedeny v tabulce „Rozsahy hodnot jednoduchých datových typů“ na konci položky.

Ve výchozím nastavení jsou všechny typy celých čísel považovány za podepsané, což znamená, že specifikátor se znaménkem lze vynechat.

Konstantám nalezeným v programu je přiřazen ten či onen typ podle jejich typu. Pokud programátor z nějakého důvodu není s tímto typem spokojen, může výslovně uvést požadovaný typ pomocí přípon L, l (dlouhý) a U, u (bez znaménka). Například konstanta 32L bude typu long a zabere 4 bajty. Přípony L a U můžete používat současně, například 0x22UL nebo 05Lu.

Poznámka

Typy short int, long int, signed int a unsigned int lze zkrátit na short, long, signed a unsigned.

Typ znaku (char)

Hodnotě znakového typu je přidělen počet bajtů dostatečný pro umístění libovolného znaku ze znakové sady pro daný počítač, což je to, co určuje název typu. Obvykle je to 1 bajt. Typ char, stejně jako ostatní celočíselné typy, může být se znaménkem nebo bez znaménka. Hodnoty se znaménkem mohou ukládat hodnoty v rozsahu -128 až 127. Pomocí specifikátoru bez znaménka mohou být hodnoty v rozsahu 0 až 255. To je dostatečné pro uložení libovolného znaku ve znakové sadě ASCII o 256 znacích. Hodnoty typu char se také používají k ukládání celých čísel, která nepřesahují hranice zadaných rozsahů.

Rozšířený typ znaku (wchar_t)

Typ wchar_t je navržen pro práci se sadou znaků, pro které nestačí 1 bajt ke kódování, například Unicode. Velikost tohoto typu je závislá na implementaci; zpravidla odpovídá typu krátký. Řetězcové konstanty typu wchar_t se zapisují s předponou L, například L»Gates».

Booleovský typ (bool)

Booleovské hodnoty mohou mít pouze hodnoty true a false, což jsou vyhrazená slova. Vnitřní forma reprezentace hodnoty false je 0 (nula). Jakákoli jiná hodnota je interpretována jako pravdivá. Při převodu na celočíselný typ má true hodnotu 1.

Typy s pohyblivou řádovou čárkou (float, double a long double)

Standard C++ definuje tři datové typy pro ukládání skutečných hodnot: float, double a long double.

Datové typy s pohyblivou řádovou čárkou jsou v paměti počítače uloženy jinak než celočíselné datové typy. Vnitřní reprezentace reálného čísla se skládá ze dvou částí – mantisy a exponentu. Na počítačích kompatibilních s IBM PC zabírají hodnoty float 4 bajty, z nichž jedna binární číslice je přidělena pro znak mantisy, 8 bitů pro exponent a 23 pro mantisu. Mantisa je číslo větší než 1,0, ale menší než 2,0. Protože úvodní číslice mantisy je vždy 1, není uložena.

Pro hodnoty double, které zabírají 8 bajtů, je pro exponent a mantisu přiděleno 11 a 52 bitů. Délka mantisy určuje přesnost čísla a délka exponentu určuje jeho rozsah. Jak můžete vidět z tabulky na konci záznamu, při stejném počtu bajtů přidělených pro hodnoty float a long int se rozsahy jejich přípustných hodnot značně liší kvůli interní formě zastoupení.

Specifikátor long před názvem dvojitého typu označuje, že pro jeho hodnotu je alokováno 10 bajtů.

Konstanty s pohyblivou řádovou čárkou jsou ve výchozím nastavení dvojího typu. Typ konstanty můžete explicitně určit pomocí přípon F, f (float) a L, l (long). Například konstanta 2E+6L bude typu long double a konstanta 1,82f bude typu float.

Chcete-li psát programy, které jsou přenosné mezi platformami, nemůžete dělat předpoklady o velikosti typu int. K jeho získání je nutné použít operaci sizeof, jejímž výsledkem je velikost typu v bajtech. Například pro operační systém MS-DOS bude sizeof (int) výsledkem 2, ale pro Windows 98 nebo OS/2 bude výsledkem 4.

Standard ANSI nespecifikuje rozsahy hodnot pro základní typy, jsou definovány pouze vztahy mezi jejich velikostmi, např.:

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

Poznámka

Minimální a maximální povolené hodnoty pro celočíselné typy jsou závislé na implementaci a jsou uvedeny v záhlaví souboru (), charakteristika reálných typů - ve spis (), stejně jako v šabloně třídy numeric_limits

typ void

Kromě těch, které jsou uvedeny, mezi hlavní typy jazyka patří typ void, ale sada hodnot tohoto typu je prázdná. Používá se k definování funkcí, které nevrací hodnotu, k určení prázdného seznamu argumentů funkcí, jako základního typu pro ukazatele a při operacích přetypování.

Rozsahy hodnot jednoduchých datových typů v C++ pro počítače kompatibilní s IBM PC

Q: Co znamená termín IBM PC-kompatibilní počítač?
Odpověď: Počítač kompatibilní s IBM PC je počítač, který je architektonicky blízký IBM PC, XT a AT. Počítače kompatibilní s IBM PC jsou postaveny na mikroprocesorech kompatibilních s Intel 8086 (a jak víte, všechny pozdější procesory Intel jsou plně zpětně kompatibilní s 8086). Ve skutečnosti jsou to téměř všechny moderní počítače.

Byly zavedeny různé typy celočíselných a reálných typů, které se liší rozsahem a přesností reprezentace dat, aby měl programátor možnost co nejefektivněji využít možnosti konkrétního zařízení, protože rychlost výpočtů a množství paměti závisí na výběr typu. Program optimalizovaný pro jeden typ počítače však nemusí být přenosný na jiné platformy, takže byste se obecně neměli spoléhat na specifické vlastnosti datových typů.

Typ Rozsah hodnot Velikost (bajt)
bool pravdivé a nepravdivé 1
podepsaný char -128 … 127 1
nepodepsaný char 0 … 255 1
podepsané krátké int -32 768 … 32 767 2
unsigned short int 0 … 65 535 2
podepsáno dlouhé int -2 147 483 648 … 2 147 483 647 4
unsigned long int 0 … 4 294 967 295 4
plovák 3,4e-38 … 3,4e+38 4
dvojnásobek 1,7e-308 … 1,7C+308 8
dlouhý dvojitý 3,4e-4932 … 3,4e+4932 10

U reálných typů jsou v tabulce uvedeny absolutní hodnoty minimální a maximální hodnoty.



Copyright 2023. Portál o výpočetní technice