Velikost dlouhého typu. Typy dat

Poslední aktualizace: 17.09.2017

Každá proměnná má specifický typ. A tento typ určuje, jaké hodnoty může mít proměnná, jaké operace s ní lze provádět a kolik bajtů v paměti bude zabírat. V jazyce C++ jsou definovány následující základní datové typy:

    bool : booleovský typ. Může nabývat jedné ze dvou hodnot: true a false. Paměťová stopa pro tento typ není přesně definována.

    char : Představuje jeden znak ASCII. V paměti zabírá 1 bajt (8 bitů). Lze uložit libovolnou hodnotu od -128 do 127 nebo od 0 do 255

    znak podepsaný : Představuje jeden znak. V paměti zabírá 1 bajt (8 bitů). Lze uložit libovolnou hodnotu od -128 do 127

    unsigned char : Představuje jeden znak. V paměti zabírá 1 bajt (8 bitů). Lze uložit libovolnou hodnotu od 0 do 255

    wchar_t : Představuje široký znak. Na Windows zabere 2 bajty (16 bitů) paměti, na Linuxu 4 bajty (32 bitů). Lze uložit libovolnou hodnotu z rozsahu od 0 do 65 535 (pro 2 bajty) nebo od 0 do 4 294 967 295 (pro 4 bajty)

    char16_t : Představuje jeden znak Unicode. V paměti zabírá 2 bajty (16 bitů). Lze uložit libovolnou hodnotu od 0 do 65 535

    char32_t : Představuje jeden znak Unicode. V paměti zabírá 4 bajty (32 bitů). Lze uložit libovolnou hodnotu od 0 do 4 294 967 295

    short : Představuje celé číslo v rozsahu –32768 až 32767. Zabírá 2 bajty (16 bitů) paměti.

    Tento typ má také synonyma short int, sign short int, sign short.

    unsigned short: Představuje celé číslo v rozsahu 0 až 65535. Zabírá 2 bajty (16 bitů) paměti.

    Tento typ má také synonymum unsigned short int .

    int: představuje celé číslo. V závislosti na architektuře procesoru může zabírat 2 bajty (16 bitů) nebo 4 bajty (32 bitů). Rozsah mezních hodnot se také může měnit od –32768 do 32767 (se 2 byty) nebo od -2 147 483 648 do 2 147 483 647 (se 4 byty). Ale v každém případě musí být velikost větší nebo rovna velikosti krátkého písma a menší nebo rovna velikosti dlouhého písma

    Tento typ má synonyma sign int a sign .

    unsigned int : Představuje kladné celé číslo. V závislosti na architektuře procesoru může zabírat 2 bajty (16 bitů) nebo 4 bajty (32 bitů), a proto se rozsah limitních hodnot může lišit: od 0 do 65535 (pro 2 bajty) nebo od 0 až 4 294 967 295 (pro 4 bajty).

    unsigned lze použít jako synonymum pro tento typ

    long : Představuje celé číslo v rozsahu −2 147 483 648 až 2 147 483 647 Zabírá 4 bajty (32 bitů) paměti.

    Tento typ má také synonyma long int , sign long int a sign long

    unsigned long: Představuje celé číslo v rozsahu 0 až 4 294 967 295 Zabírá 4 bajty (32 bitů) paměti.

    Má synonymum unsigned long int .

    long long : Představuje celé číslo v rozsahu −9 223 372 036 854 775 808 až +9 223 372 036 854 775 807 Zabírá obvykle 8 bajtů (64 bitů) paměti.

    Má synonyma long long int , sign long long int a sign long long .

    unsigned long long : Představuje celé číslo v rozsahu 0 až 18,446,744,073,709,551,615, obvykle 8 bajtů (64 bitů) v paměti.

    Má synonymum unsigned long long int .

    float : Představuje reálné číslo s plovoucí desetinnou čárkou s jednoduchou přesností v rozsahu +/- 3,4E-38 až 3,4E+38. V paměti zabírá 4 bajty (32 bitů).

    double : Představuje reálné číslo s plovoucí desetinnou čárkou s dvojnásobnou přesností v rozsahu +/- 1,7E-308 až 1,7E+308. V paměti zabírá 8 bajtů (64 bitů).

    long double : Představuje reálné číslo s plovoucí desetinnou čárkou s dvojnásobnou přesností o velikosti alespoň 8 bajtů (64 bitů). V závislosti na velikosti obsazené paměti se rozsah platných hodnot může lišit.

    void: zadejte bez hodnoty

Všechny datové typy kromě void lze tedy rozdělit do tří skupin: znakové (char, wchar_t, char16_t, char32_t), celé číslo (short, int, long, long long) a typy čísel s pohyblivou řádovou čárkou (float, double, long double).

Typy postav

Typy používané k reprezentaci znaků v aplikaci jsou char, wchar_t, char16_t a char32_t.

Pojďme definovat několik proměnných:

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

Proměnná char má jako hodnotu jeden znak v jednoduchých uvozovkách: char c ="d" . Můžete také přiřadit číslo z rozsahu uvedeného výše v seznamu: char c = 120 . V tomto případě bude hodnotou proměnné c znak, který má v tabulce znaků ASCII kód ​​120.

Stojí za zvážení, že pro výstup znaků wchar_t do konzole byste neměli používat std::cout, ale std::wcout stream:

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

V tomto případě může proud std::wcout pracovat s char i wchar_t. A proud std::cout pro proměnnou wchar_t vypíše svůj číselný kód místo znaku.

Standard C++11 přidal typy char16_t a char32_t, které jsou orientovány na používání Unicode. Vlákna pro práci s těmito typy však dosud nebyla implementována na úrovni OS. Pokud tedy potřebujete zobrazit hodnoty proměnných těchto typů do konzole, musíte proměnné převést na typy char nebo wchar_t:

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

V tomto případě předchází proměnným při výstupu operace přetypování na typ char - (char) , díky čemuž jsou hodnoty proměnných b, c a d převedeny na typ char a lze je vypsat na konzole pomocí proudu std::cout.

Celočíselné typy

Typy celých čísel jsou reprezentovány následujícími typy: short, unsigned short, int, unsigned int, long, unsigned long, long long a unsigned long long:

Krátké a = -10; unsigned short b= 10; int c = -30; bez znaménka int d = 60; dlouhé e = -170; bez znaménka dlouhé f = 45; dlouhé dlouhé g = 89;

Typy čísel s pohyblivou řádovou čárkou

Typy čísel s plovoucí desetinnou čárkou a zlomkové čísla jsou reprezentovány float, double a long double:

Float a = -10,45; dvojité b = 0,00105; dlouhé dvojité c = 30,890045;

Velikosti datových typů

Výše uvedený seznam ukazuje pro každý typ velikost, kterou zabírá v paměti. Je však třeba poznamenat, že vývojáři kompilátorů mohou zvolit limity velikosti pro typy nezávisle na hardwarových možnostech počítače. Norma stanoví pouze minimální hodnoty, které by měly být. Například pro typy int a short je minimální hodnota 16 bitů, pro typ long - 32 bitů, pro typ long double. V tomto případě nesmí být velikost dlouhého typu menší než velikost typu int a velikost typu int nesmí být menší než velikost krátkého typu a velikost dlouhého double typu musí být být větší než dvojnásobek. Například kompilátor g++ pro Windows používá 12 bajtů pro dlouhé zdvojení a kompilátor zabudovaný do sady Visual Studio a běžící také pod Windows používá 8 bajtů pro dlouhé zdvojení. To znamená, že i v rámci stejné platformy mohou různé kompilátory přistupovat k velikostem určitých datových typů odlišně. Ale obecně se používají velikosti, které jsou uvedeny výše při popisu datových typů.

Jsou však situace, kdy je potřeba přesně znát velikost určitého typu. A za tímto účelem má C++ operátor sizeof(), který vrací velikost paměti v bajtech, kterou proměnná zabírá:

#zahrnout int main() ( dlouhé dvojité číslo = 2; std::cout<< "sizeof(number) =" << sizeof(number); return 0; }

Výstup konzoly při kompilaci v g++:

sizeof(číslo) = 12

Zároveň je při definování proměnných důležité pochopit, že hodnota proměnné by neměla překročit limity stanovené pro její typ. Například:

Krátké číslo bez znaménka = -65535;

Kompilátor G++ při kompilaci programu s tímto řádkem vygeneruje chybu, že hodnota -65535 není v rozsahu platných hodnot pro typ unsigned short a bude zkrácena.

V sadě Visual Studio může kompilace probíhat bez chyb, ale proměnná number obdrží hodnotu 2 – výsledek převodu čísla -65535 na krátký typ bez znaménka. To znamená, že výsledek opět nebude přesně takový, jaký se očekává. Hodnota proměnné je pouze soubor bitů v paměti, které jsou interpretovány podle konkrétního typu. A pro různé typy lze stejnou sadu bitů interpretovat odlišně. Proto je důležité při přiřazování hodnoty proměnné zohledňovat rozsahy hodnot pro daný typ.

automatický specifikátor

Někdy může být obtížné určit typ výrazu. A podle nejnovějších standardů můžete nechat kompilátor odvodit typ samotného objektu. A k tomu slouží automatický specifikátor. Navíc, pokud definujeme proměnnou pomocí auto specifikátoru, musí být tato proměnná inicializována nějakou hodnotou:

Automatické číslo = 5;

Na základě přiřazené hodnoty kompilátor odvodí typ proměnné. Neinicializované proměnné s automatickým specifikátorem nejsou povoleny.

Tato část se bude zabývat hlavními datovými typy v C++, tyto datové typy se také nazývají vestavěné. Programovací jazyk C++ je rozšiřitelný programovací jazyk. Termín rozšiřitelný znamená, že kromě vestavěných datových typů můžete vytvářet vlastní datové typy. Proto je v C++ obrovské množství datových typů. Budeme studovat pouze ty hlavní.

Tabulka 1 - Datové typy C++
Typ byte Rozsah akceptovaných hodnot

datový typ integer (Boolean).

bool 1 0 / 255

datový typ celé číslo (znak).

char 1 0 / 255

celočíselné datové typy

krátký int 2 -32 768 / 32 767
unsigned short int 2 0 / 65 535
int 4
nepodepsaný int 4 0 / 4 294 967 295
dlouhá int 4 -2 147 483 648 / 2 147 483 647
unsigned long int 4 0 / 4 294 967 295

datové typy s plovoucí desetinnou čárkou

plovák 4 -2 147 483 648.0 / 2 147 483 647.0
dlouhý plovák 8
dvojnásobek 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

Tabulka 1 ukazuje hlavní datové typy v C++. Celá tabulka je rozdělena do tří sloupců. První sloupec označuje vyhrazené slovo, které bude určovat každý svůj vlastní datový typ. Druhý sloupec udává počet bajtů přidělených pro proměnnou s odpovídajícím datovým typem. Třetí sloupec ukazuje rozsah přijatelných hodnot. Upozorňujeme, že v tabulce jsou všechny datové typy uspořádány od nejmenšího po největší.

datový typ bool

První v tabulce je datový typ bool celočíselný datový typ, protože rozsah platných hodnot je celá čísla od 0 do 255. Ale jak jste si již všimli, v závorkách je uvedeno Booleovský datový typ, a to je také pravda. Protože bool slouží výhradně k ukládání výsledků booleovských výrazů. Booleovský výraz může mít jeden ze dvou výsledků: true nebo false. true - pokud je logický výraz pravdivý, nepravda - pokud je logický výraz nepravdivý.

Protože ale rozsah platných hodnot datového typu bool je od 0 do 255, bylo nutné tento rozsah nějak sladit s logickými konstantami true a false definovanými v programovacím jazyce. Konstanta true je tedy ekvivalentní všem číslům od 1 do 255 včetně, zatímco konstanta false je ekvivalentní pouze jednomu celému číslu - 0. Uvažujme program využívající datový typ bool.

// data_type.cpp: Definuje vstupní bod pro konzolovou aplikaci. #include "stdafx.h" #include pomocí jmenného prostoru std; int main(int argc, char* argv) ( bool boolean = 25; // proměnná typu bool s názvem boolean if (boolean) // podmínka operátoru if cout<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

V řádek 9deklarovaná proměnná typu bool , který je inicializován na 25. Teoreticky pořádky 9, v booleovské proměnné by měla obsahovat číslo 25, ale ve skutečnosti tato proměnná obsahuje číslo 1. Jak jsem řekl, číslo 0 je nepravdivá hodnota, číslo 1 je pravdivá hodnota. Jde o to, že v proměnné jako bool může obsahovat dvě hodnoty - 0 (nepravda) nebo 1 (pravda). Kdežto pod datovým typem bool je přidělen celý bajt, což znamená, že proměnná typu bool může obsahovat čísla od 0 do 255. K určení nepravdivých a pravdivých hodnot jsou potřeba pouze dvě hodnoty 0 a 1 Vyvstává otázka: „K čemu je těch dalších 253 hodnot?

Na základě této situace jsme se dohodli, že použijeme čísla od 2 do 255 jako ekvivalent čísla 1, tedy pravdy. To je přesně důvod, proč booleovská proměnná obsahuje číslo 25 a ne 1. In řádky 10-13 deklarována, která přenáší kontrolu na provozovatele v řádek 11, pokud je podmínka pravdivá, a operátor v řádek 13, pokud je podmínka nepravdivá. Výsledek programu je na obrázku 1.

True = 1 Chcete-li pokračovat, stiskněte libovolnou klávesu. . .

Obrázek 1 - datový typ bool

Typ dat char

Datový typ char je celočíselný datový typ, který se používá k reprezentaci znaků. To znamená, že každý znak odpovídá určitému číslu z rozsahu. Datovému typu char se také říká znakový datový typ, protože grafické znázornění znaků v C++ je možné díky char. Pro reprezentaci znaků v C++ je datovému typu char přidělen jeden bajt, jeden bajt obsahuje 8 bitů, poté dva umocníme na 8 a získáme hodnotu 256 – počet znaků, které lze zakódovat. Pomocí datového typu char tedy můžete zobrazit kterýkoli z 256 znaků. Všechny kódované znaky jsou zastoupeny v .

ASCII (z anglického Standard Code for Information Interchange) - americký standardní kód pro výměnu informací.

Zvažte program používající datový typ char.

// symbols.cpp: Definuje vstupní bod pro konzolovou aplikaci. #include "stdafx.h" #include pomocí jmenného prostoru std; int main(int argc, char* argv) ( symbol char = "a"; // deklarace proměnné typu char a její inicializace se symbolem "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

Takže dovnitř řádek 9proměnná s názvem symbol , je mu přiřazena hodnota symbolu"a" ( ASCII kód). V řádek 10 cout operátor vypíše znak obsažený v proměnné symbol V řádek 11pole řetězců s názvem tětiva a velikost pole je určena implicitně. Řetězec je uložen v poli řetězců"webová stránka" . Vezměte prosím na vědomí, že když jsme uložili symbol do proměnné jako char , pak za rovnítko vložíme jednoduché uvozovky, do kterých jsme symbol napsali. Při inicializaci pole řetězců s určitým řetězcem jsou za rovnítko, ve kterém je zapsán určitý řetězec, umístěny dvojité uvozovky. Stejně jako běžný znak jsou řetězce vypisovány pomocí operátoru cout , řádek 12. Výsledek programu je na obrázku 2.

Symbol = řetězec = web Chcete-li pokračovat, stiskněte libovolnou klávesu. . .

Obrázek 2 - datový typ char

Integer datové typy

K reprezentaci čísel se používají celočíselné datové typy. V tabulce 1 jich je šest: short int, unsigned short int, int, unsigned int, long int, unsigned long int . Všechny mají svou vlastní velikost paměti a rozsah akceptovaných hodnot. V závislosti na kompilátoru se velikost obsazené paměti a rozsah akceptovaných hodnot mohou lišit. V tabulce 1 jsou uvedeny všechny rozsahy akceptovaných hodnot a velikostí obsazené paměti pro kompilátor MVS2010. Kromě toho jsou všechny datové typy v tabulce 1 uspořádány v rostoucím pořadí podle velikosti obsazené paměti a rozsahu akceptovaných hodnot. Rozsah akceptovaných hodnot tak či onak závisí na velikosti obsazené paměti. V souladu s tím, čím větší je velikost obsazené paměti, tím větší je rozsah akceptovaných hodnot. Rozsah akceptovaných hodnot se také změní, pokud je datový typ deklarován s předponou bez znaménka. Předpona bez znaménka znamená, že datový typ nemůže ukládat hodnoty se znaménkem, pak se rozsah kladných hodnot zdvojnásobí, například datové typy short int a unsigned short int.

Celočíselné předpony datových typů:

krátký prefix zkracuje datový typ, na který je aplikován, tím, že zmenšuje velikost paměti, kterou zabírá;

dlouho prefix rozšiřuje datový typ, na který je aplikován, zvětšením velikosti paměti, kterou zabírá;

bez znaménka – předpona zdvojnásobuje rozsah kladných hodnot, zatímco rozsah záporných hodnot nelze v tomto datovém typu uložit.

Takže v podstatě máme jeden celočíselný typ pro reprezentaci celých čísel: datový typ int. Díky prefixům short, long, unsigned se objevuje určitá rozmanitost datových typů int, lišících se velikostí obsazené paměti a (nebo) rozsahem akceptovaných hodnot.

Datové typy s plovoucí desetinnou čárkou

V C++ existují dva typy dat s pohyblivou řádovou čárkou: float a double. Datové typy s pohyblivou řádovou čárkou jsou navrženy pro ukládání čísel s pohyblivou řádovou čárkou. Datové typy float a double mohou ukládat kladná i záporná čísla s pohyblivou řádovou čárkou. Datový typ float má paměťovou stopu, která je poloviční než u typu double, což znamená, že rozsah akceptovaných hodnot je také menší. Pokud je datový typ float deklarován s dlouhou předponou, pak se rozsah akceptovaných hodnot bude rovnat rozsahu akceptovaných hodnot typu double. V zásadě jsou datové typy s pohyblivou řádovou čárkou potřebné k řešení problémů s vysokou výpočetní přesností, jako jsou peněžní transakce.

Podívali jsme se tedy na hlavní body týkající se hlavních datových typů v C++. Zbývá pouze ukázat, odkud pocházejí všechny tyto rozsahy akceptovaných hodnot a velikosti obsazené paměti. A za tímto účelem vyvineme program, který vypočítá hlavní charakteristiky všech typů dat diskutovaných výše.

// data_types.cpp: Definuje vstupní bod pro konzolovou aplikaci. #include "stdafx.h" #include // I/O manipulační knihovna #include // hlavičkový soubor matematických funkcí #include pomocí jmenného prostoru std; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // záhlaví sloupců <<"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; }

Tento program je zveřejněn, abyste si mohli prohlédnout charakteristiky datových typů ve vašem systému. Není třeba rozumět kódu, protože program používá řídicí příkazy, které pravděpodobně ještě neznáte. Pro povrchní seznámení s programovým kódem vysvětlím některé body níže. Operátor velikost() Vypočítá počet bajtů přidělených pro datový typ nebo proměnnou. Funkce pow(x,y) povznáší význam x na mocninu y , tato funkce je dostupná z hlavičkového souboru . pevné a setprecision() manipulátory dostupné ze souboru záhlaví . První je opravený , předává hodnoty v pevné formě do výstupního proudu. Manipulátor setprecision(n) zobrazí n desetinná místa. Maximální hodnota určitého datového typu se vypočítá pomocí následujícího vzorce:

Max_val_type = 2^(b * 8 - 1) - 1; // pro datové typy se zápornými a kladnými čísly // kde b je počet bajtů přidělených v paměti pro proměnnou s tímto datovým typem // vynásobte 8, protože v jednom bajtu je 8 bitů // odečtěte 1 v závorce, protože čísla rozsahu musí být rozdělena na dvě pro kladné a záporné hodnoty // na konci odečtěte 1, protože rozsah čísel začíná od nuly // datové typy s předponou unsigned max_val_type = 2^(b * 8) - 1; // pro datové typy pouze s kladnými čísly // vysvětlení vzorce jsou podobné, pouze jednotka se neodečítá od závorky

Příklad fungování programu je vidět na obrázku 3. První sloupec ukazuje hlavní datové typy v C++, druhý sloupec ukazuje velikost paměti přidělené pro každý datový typ a třetí sloupec ukazuje maximální hodnotu, kterou odpovídající datový typ může obsahovat. Minimální hodnota je podobná maximální. Pro datové typy s předponou bez znaménka je minimální hodnota 0.

Datový typ byte max. hodnota bool = 1 255,00 char = 1 255,00 short int = 2 32767,00 unsigned short int = 2 65535,00 int = 4 2147483647,00 unsigned long int = 4 4 42954966,00 0 unsigned long int = 4 4294967295,00 float = 4 2147483647,00 double = 8 9223372036854775808.00 Chcete-li pokračovat, stiskněte libovolnou klávesu. . .

Obrázek 3 - Datové typy C++

Pokud je například proměnné typu short int přiřazena hodnota 33000, pak bitová mřížka přeteče, protože maximální hodnota v proměnné typu short int je 32767. To znamená, že do proměnné bude uložena nějaká jiná hodnota typu short int, s největší pravděpodobností bude záporný. Protože jsme se dotkli datového typu int, stojí za zmínku, že klíčové slovo int můžete vynechat a napsat například jen krátké . Kompilátor bude takový záznam interpretovat jako short int . Totéž platí pro předpony dlouhé a bez znaménka. Například:

// zkratka pro datový typ int short a1; // stejné jako short int long a1; // stejné jako long int unsigned a1; // stejné jako unsigned int unsigned short a1; // stejné jako unsigned short int

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 na 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:

// dvojitý typ 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, …). Mnemotechnická hodnota leden je celočíselná hodnota 0, mnemotechnická hodnota únor 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"; ...

Typy dat

Datové typy jsou v C# obzvláště důležité, protože jde o silně typovaný jazyk. To znamená, že všechny operace podléhají přísné typové kontrole kompilátorem a nelegální operace se nezkompilují. Přísná typová kontrola proto eliminuje chyby a zvyšuje spolehlivost programů. Aby bylo možné vynutit kontrolu typu, všechny proměnné, výrazy a hodnoty musí být určitého typu. V tomto programovacím jazyce vůbec neexistuje nic jako „beztypová“ proměnná. Kromě toho typ hodnoty určuje operace, které s ní lze provádět. Operace, která je legální pro jeden datový typ, nemusí být platná pro jiný.

V C# existují dvě obecné kategorie vestavěných datových typů: hodnotové typy A referenční typy. Liší se obsahem proměnné. Koncepčně je rozdíl mezi nimi v tom, že typ hodnoty ukládá data přímo, zatímco typ reference ukládá odkaz na hodnotu.

Tyto typy jsou uloženy na různých místech v paměti: typy hodnot jsou uloženy v oblasti známé jako zásobník a referenční typy jsou uloženy v oblasti známé jako spravovaná halda.

Podívejme se hodnotové typy.

Celočíselné typy

C# definuje devět celočíselných typů: char, byte, sbyte, short, ushort, int, uint, long a ulong. Ale typ char se používá především k reprezentaci znaků, a proto se s ním zachází samostatně. Zbývajících osm celočíselných typů je určeno pro numerické výpočty. Níže je uveden jejich rozsah čísel a bitová hloubka:

C# Integer Types
Typ Typ CTS Velikost bitu Rozsah
byte System.Byte 8 0:255
sbyte System.SByte 8 -128:127
krátký System.Int16 16 -32768: 32767
ushort System.UInt16 16 0: 65535
int System.Int32 32 -2147483648: 2147483647
uint System.UInt32 32 0: 4294967295
dlouho System.Int64 64 -9223372036854775808: 9223372036854775807
ulong System.UInt64 64 0: 18446744073709551615

Jak ukazuje tabulka výše, C# definuje varianty různých typů celých čísel se znaménkem i bez znaménka. Typy celých čísel se znaménkem se liší od svých protějšků bez znaménka ve způsobu, jakým interpretují nejvýznamnější bit celého čísla. Pokud tedy program specifikuje hodnotu celého čísla se znaménkem, kompilátor jazyka C# vygeneruje kód, který používá nejvýznamnější bit celého čísla jako příznak znaménka. Číslo je považováno za kladné, pokud je příznak znaménka 0, a záporné, pokud je 1.

Záporná čísla jsou téměř vždy reprezentována metodou dvojkového doplňku, přičemž všechny binární číslice záporného čísla jsou nejprve invertovány a poté je k tomuto číslu přidána 1.

Pravděpodobně nejběžnějším celočíselným typem v programování je typ int. Proměnné typu int se často používají pro řízení smyčky, indexování pole a obecné matematické výpočty. Pokud potřebujete celočíselnou hodnotu s větším rozsahem číselných reprezentací než typ int, existuje pro tento účel řada dalších celočíselných typů.

Pokud je tedy třeba hodnotu uložit bez znaménka, můžete pro ni vybrat typ uint, pro velké hodnoty se znaménkem - dlouhý typ a pro velké hodnoty bez znaménka - typ ulong. Jako příklad níže je program, který vypočítá vzdálenost Země od Slunce v centimetrech. K uložení tak velké hodnoty používá dlouhou proměnnou:

Použití systému; pomocí System.Collections.Generic; pomocí System.Linq; pomocí System.Text; jmenný prostor ConsoleApplication1 ( class Program ( static void Main(string args) ( dlouhý výsledek; const long km = 149800000; // vzdálenost v km. výsledek = km * 1000 * 100; Console.WriteLine(výsledek); Console.ReadLine(); )))

Všem celočíselným proměnným lze přiřadit hodnoty v desítkové nebo šestnáctkové soustavě. V druhém případě je vyžadována předpona 0x:

Dlouhé x = 0x12ab;

Pokud existuje nějaká nejistota, zda je celočíselná hodnota typu int, uint, long nebo ulong, pak výchozí int je přijato. Chcete-li explicitně určit, jaký jiný typ celého čísla by hodnota měla mít, lze k číslu připojit následující znaky:

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

U a L lze také psát malými písmeny, ačkoli malé písmeno L lze snadno vizuálně zaměnit s číslem 1 (jedna).

Typy s plovoucí desetinnou čárkou

Typy s plovoucí desetinnou čárkou umožňují reprezentovat čísla pomocí zlomkové části. V C# existují dva typy datových typů s plovoucí desetinnou čárkou: plovák A dvojnásobek. Představují číselné hodnoty v jednoduché a dvojité přesnosti. Šířka typu float je tedy 32 bitů, což přibližně odpovídá rozsahu reprezentace čísel od 5E-45 do 3,4E+38. A šířka typu double je 64 bitů, což přibližně odpovídá rozsahu reprezentace čísel od 5E-324 do 1,7E+308.

Datový typ float je určen pro menší hodnoty s plovoucí desetinnou čárkou, které vyžadují menší přesnost. Datový typ double je větší než float a nabízí vyšší stupeň přesnosti (15 bitů).

Pokud je ve zdrojovém kódu pevně zakódována neceločíselná hodnota (například 12.3), pak kompilátor obvykle předpokládá, že je zamýšlena hodnota typu double. Pokud je třeba zadat hodnotu jako plovoucí, budete k ní muset připojit znak F (nebo f):

Float f = 12,3F;

Desetinný datový typ

K dispozici je také desetinný typ, který představuje vysoce přesná čísla s plovoucí desetinnou čárkou. desetinný, který je určen pro použití ve finančních kalkulacích. Tento typ má šířku 128 bitů, aby reprezentoval číselné hodnoty v rozsahu od 1E-28 do 7,9E+28. Pravděpodobně víte, že běžná aritmetika s plovoucí desetinnou čárkou je náchylná k chybám zaokrouhlování desetinných míst. Tyto chyby jsou eliminovány použitím desetinného typu, který umožňuje reprezentovat čísla na 28 (někdy i 29) desetinných míst. Protože tento datový typ může představovat desetinné hodnoty bez zaokrouhlovacích chyb, je zvláště užitečný pro finanční výpočty:

Použití systému; pomocí System.Collections.Generic; pomocí System.Linq; pomocí System.Text; jmenný prostor ConsoleApplication1 ( class Program ( static void Main(string args) ( // *** Výpočet nákladů na investici s *** // *** pevná míra návratnosti*** dekadické peníze, procento; int i; const byte years = 15 ; peníze = 1000,0m procent = 0,045m;

Výsledkem tohoto programu bude:

Symboly

V C# nejsou znaky reprezentovány v 8bitovém kódu, jako v mnoha jiných programovacích jazycích, jako je C++, ale v 16bitovém kódu, tzv. Unicode. Znaková sada Unicode je tak široká, že pokrývá znaky z téměř každého přirozeného jazyka na světě. Zatímco mnoho přirozených jazyků, včetně angličtiny, francouzštiny a němčiny, má relativně malé abecedy, některé jiné jazyky, jako je čínština, používají poměrně velké znakové sady, které nemohou být reprezentovány 8bitovým kódem. K překonání tohoto omezení definuje C# typ char, což představuje 16bitové hodnoty bez znaménka v rozsahu od 0 do 65 535, standardní 8bitová znaková sada ASCII je však podmnožinou Unicode v rozsahu od 0 do 127. Proto jsou znaky ASCII stále platné v C#.


Každý ví, že lze sčítat a odečítat pouze množství stejného typu. Například jablka lze sčítat s jablky, ale jablka nelze sčítat s metry čtverečními nebo s teplotou. Většina moderních algoritmických jazyků má podobná omezení.

Stejně jako běžné předměty mají typy charakteristik barva (červená, modrá, žlutá, zelená), chuť (hořká, kyselá, sladká), množství (jeden a půl, dva, sedm), v programovacím jazyce MQL4 se data liší podle typu . Když mluvíme o datovém typu, máme na mysli hodnotový typ konstanty, proměnné a hodnoty vrácené funkcí (pojem funkce je popsán v části Funkce).

V jazyce MQL4 se rozlišují následující typy (konstanty, proměnné a hodnoty vrácené funkcemi):

Zadejte int

Zadejte hodnoty int- to jsou celá čísla. Tento typ zahrnuje hodnoty, které jsou svou povahou integrální. Příklady celých čísel zahrnují: počet barů v okně finančního nástroje (16 000 barů), počet otevřených a čekajících příkazů (3 příkazy), vzdálenost v bodech od aktuálního kurzu finančního nástroje k otevírací ceně příkazu (15 bodů). Počet objektů, jako jsou události, může být také pouze celá čísla. Například počet pokusů o otevření objednávky nemůže být jeden a půl, ale pouze jeden, dva, tři atd.

Existují 2 typy celočíselných hodnot:

  • Desetinný hodnoty se mohou skládat z čísel 0 - 9 a mohou být kladné nebo záporné: 10, 11, 12, 1, 5, -379, 25, -12345, -1, 2.
  • Hexadecimální hodnoty se mohou skládat z písmen latinské abecedy od A do F nebo od a do f, čísla od 0 do 9, musí začínat 0x nebo 0X a nabývat kladných a záporných hodnot: 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1 .

Hodnoty typu int musí být v rozsahu čísel od -2,147,483,648 do 2,147,483,647 Pokud je hodnota konstanty nebo proměnné mimo zadaný rozsah, výsledek programu nebude definován. V paměti počítače zabírají hodnoty konstant a proměnných typu int 4 bajty.

Příklad použití proměnné int v programu:

int Art = 10; // Příklad celočíselné proměnné
int B_27 = -1; // Příklad celočíselné proměnné
int Num = 21; // Příklad celočíselné proměnné
int Max = 2147483647; // Příklad celočíselné proměnné
int Min = - 2147483648; // Příklad celočíselné proměnné

Typ double

Zadejte hodnoty dvojnásobek jsou reálná čísla obsahující zlomkovou část.

Příkladem hodnot tohoto typu jsou jakékoli veličiny, jejichž hodnota může mít zlomkovou část: úhel sklonu linie podpory, cena finančního nástroje, průměrný počet objednávek otevřených během dne.

Někdy při psaní programů mohou nastat potíže s určením typu proměnné, to znamená, že programátorovi není hned jasné, o jaký typ (int nebo double) se jedná. Podívejme se na malý příklad:

Program otevřel 12 objednávek během týdne. Jaký typ proměnné A by měl být zohledňující průměrný počet objednávek otevřených tímto programem za den? Samozřejmě odpověď zní: A = 12 objednávek / 5 dní. To znamená, že proměnná A = 2,4 by měla být v programu brána v úvahu jako dvojnásobek, protože tato hodnota má zlomkovou část. A jaký typ by měla být stejná proměnná A, pokud je celkový počet objednávek otevřených za týden 10? Zdálo by se, že pokud 2 (10 objednávek / 5 dní = 2) nemá zlomkovou část, pak lze proměnnou A vzít v úvahu jako int. Tato úvaha je však mylná. Aktuální hodnota proměnné může mít zlomkovou část sestávající pouze z nul. Důležité ale je, že hodnota této proměnné je ze své podstaty platná. Proměnná A musí být v tomto případě také typu double a při zápisu konstanty do programu se musí zobrazit dělicí bod: A = 2,0


Hodnoty reálných konstant a proměnných se skládají z celé části, desetinné čárky (.) a zlomkové části. Mohou nabývat kladných i záporných hodnot. Celá a zlomková část jsou tvořeny čísly 0 - 9. Počet platných číslic za desetinnou čárkou může dosáhnout 15. Například:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Rozsah dvojnásobných hodnot je od -1,7 * e-308 do 1,7 * e308. V paměti počítače zabírají hodnoty konstant a proměnných dvojitého typu 8 bajtů.

Příklad použití dvojité proměnné v programu:

double Art = 10,123 ;
double B_27 = -1,0; // Příklad reálné proměnné
double Num = 0,5 ; // Příklad reálné proměnné
dvojitý MMM = -12,07; // Příklad reálné proměnné
dvojnásobná Cena_1 = 1,2756 ; // Příklad reálné proměnné

Zadejte bool

Zadejte hodnoty bool- jedná se o hodnoty logického typu, jejichž obsah je nepravdivý a pravdivý.

Abychom lépe pochopili význam pojmu logický typ, uveďme si malý příklad z každodenního života. Předpokládejme, že učitel potřebuje mít přehled o učebnicích žáků. V tomto případě si učitel udělá seznam žáků na papír a na pravou stranu řádku si udělá poznámky, zda žák učebnici má či nemá. Může například zadat zaškrtnutí a pomlčku:

Seznam studentů Učebnice fyziky Učebnice biologie Učebnice chemie
1 Ivanov PROTI - -
2 Petrov PROTI - PROTI
3 Sidorov - PROTI PROTI
... ... ... ... ...
25 Mironov PROTI PROTI PROTI

Hodnoty v pravých sloupcích budou mít pouze 2 možné hodnoty: true nebo false. Tyto hodnoty nelze klasifikovat jako dříve diskutované datové typy, protože se nejedná o čísla. Nejsou to také hodnoty pro barvu, chuť, množství atd. Přesto nesou důležitou sémantickou zátěž. V jazyce MQL4 se takové hodnoty nazývají logické. Charakteristickým znakem konstant a proměnných typu bool je, že mohou nabývat pouze 2 možných hodnot - true (true, True, TRUE, 1) nebo false (false, False, FALSE, 0). V paměti počítače zabírají hodnoty konstant a proměnných typu bool 4 bajty.

Příklad použití proměnné typu bool v programu:

bool aa = Pravda ; // Booleovská proměnná aa má hodnotu true
bool B17 = TRUE ; // Booleovská proměnná B17 má hodnotu true
bool Hamma = 1 ; // Booleovská proměnná Hamma je pravdivá

bool Asd = False ; // Booleovská proměnná Asd je false
bool Nol = FALSE ; // Booleovská proměnná Nol je nepravdivá
bool Prim = 0 ; // Booleovská proměnná Prim je nepravdivá

Zadejte řetězec

Zadejte hodnotu tětiva je řetězcová hodnota, která je sadou znaků ASCII.

V běžném životě mají názvy např. prodejen, značek aut atd. podobný obsah. Hodnota typu řetězec se zapisuje jako sada znaků uzavřených v uvozovkách (nepleťte si dvojité uvozovky se dvěma jednoduchými uvozovkami!). Uvozovky se používají pouze k označení začátku a konce hodnoty řetězcové konstanty a samotná hodnota je sada znaků obklopených uvozovkami.

Pokud potřebujete do řetězce zadat dvojitou uvozovku ", musíte před ní uvést znak zpětného lomítka: \. Do řetězce lze zadat libovolné speciální znakové konstanty, před kterými je znak zpětného lomítka \. Délka řetězcové konstanty je od 0 do 255 znaků Pokud délka řetězcové konstanty překročí maximum, přebytečné znaky napravo se zahodí a kompilátor vydá odpovídající varování. Kombinace dvou znaků, z nichž první je zpětné lomítko \, je obvykle běžné a je interpretováno většinou programů jako indikace provedení určitého formátování textu, kombinace se nezobrazuje, například kombinace \n označuje nutnost zalomení řádku, \t označuje tabulátor atd.

Hodnota typu řetězce je zapsána jako sada znaků uzavřených do dvojitých uvozovek: "MetaTrader 4", "Stop Loss", "Ssssstop_Loss", "stoploss", "10 pips". Skutečná hodnota řetězce je sada znaků uvnitř uvozovek. Uvozovky se používají pouze k označení hranic hodnoty. Vnitřní reprezentace je 8bajtová struktura.

Příklad použití řetězcové proměnné v programu:

string Prefix = "MetaTrader 4";
string Postfix = "_of_my_progr. OK"; // Příklad řetězcové proměnné
string Name_Mass = "Historie"; // Příklad řetězcové proměnné
řetězcový text ="Horní řádek\ n Sečteno a podtrženo"; // text obsahuje nové řádky

Zadejte barvu

Zadejte hodnotu barva je hodnota typu barvy.

Každý ví, co barva znamená: modrá, červená, bílá, žlutá, zelená. Není těžké si představit, co znamená proměnná nebo konstanta typu barvy. Jedná se o konstantu nebo proměnnou, jejíž hodnotou je barva. To se může zdát poněkud neobvyklé, ale ve své podstatě je to velmi jednoduché. Stejně jako je hodnota celočíselné konstanty číslo, je hodnotou barevné konstanty barva.

Hodnoty barevných konstant a proměnných mohou být reprezentovány jedním ze tří typů:

  • Doslovy

    Doslovná hodnota typu barvy má tři části, které představují číselné hodnoty intenzity tří složek primární barvy: červené, zelené a modré. Tento typ hodnoty začíná znakem C a je ohraničen jednoduchými uvozovkami.

    Číselné hodnoty intenzity barevné složky se pohybují od 0 do 255 a mohou být zapsány v desítkovém nebo hexadecimálním formátu.

    Příklady: C"128,128,128" (šedá), C"0x00,0x00,0xFF" (modrá), C"0xFF,0x33,0x00" (červená).

  • Celočíselná reprezentace

    Reprezentace celého čísla je zapsána jako hexadecimální nebo desetinné číslo. Hexadecimální číslo má tvar 0xRRGGBB, kde RR je hodnota intenzity červené složky barvy, GG je zelená složka a BB je modrá složka. Desetinné konstanty nemají přímý odraz v RGB. Představují desetinnou hodnotu hexadecimální reprezentace celého čísla.

    Reprezentovat hodnoty typu barvy jako celá čísla a hexadecimální literály je velmi pohodlné. Většina moderních textových a grafických editorů uvádí informace o obsahu červené, modré a zelené složky ve zvolené barevné hodnotě. Stačí v editoru vybrat požadovanou barvu a takto identifikovaná čísla přepsat do odpovídajícího znázornění hodnoty barvy.

    Příklady: 0xFFFFFF (bílá), 0x008000 (zelená), 16777215 (bílá), 32768 (zelená).


    Rýže. 11. V moderních editorech můžete použít parametry barev pro doslovné a celočíselné vyjádření hodnoty barvy konstanty.

  • Názvy barev

    Nejjednodušší způsob, jak určit barvu, je zadat její název podle tabulky barev na webu. V tomto případě je význam barvy reprezentován slovem spojeným s barvou, například Červená - červená.

    Černá Tmavozelený DarkSlateGray Olivový Zelená Teal námořnictvo Nachový
    Maroon Indigo Půlnoční modrá Tmavě modrá Tmavě Olivově Zelená Sedlohnědá ForestGreen OliveDrab
    Zelené moře DarkGoldenrod DarkSlateBlue Sienna Středně modrá Hnědý Tmavě tyrkysová DimGray
    LightSeaGreen Tmavě fialová FireBrick Středně fialováČervená Střední SeaGreen Čokoláda Karmínový ocelově modrá
    Zlatobýl Středně jarní Zelená Trávník Green CadetBlue DarkOrchid Žluto zelená Limetkově zelená Oranžová červená
    Tmavě oranžová oranžový Zlato Žlutá Chartreuse Limetka SpringGreen Aqua
    DeepSkyBlue Modrý Purpurová Červené Šedá Břidlicově šedá Peru Modrofialová
    LightSlateGray Sytě růžová Středně tyrkysová Dodger Blue Tyrkysový Královská modrá Břidlicově modrá Tmavá khaki
    Indiánská červená Střední orchidej Zelená žlutá Střední akvamarín Tmavězelená Rajče RosyBrown Orchidej
    Středně fialová PaleVioletRed Korál Chrpa Modrá Tmavě šedá SandyBrown MediumSlateBlue Opálení
    Tmavý losos BurlyWood HotPink Losos fialový LightCoral Modrá obloha Světlý losos
    Švestka Khaki Světle zelená Akvamarín stříbrný LightSkyBlue LightSteelBlue Světle modrá
    Bledězelená Bodlák Modrý prášek PaleGoldenrod Světle tyrkysová Světle šedá Pšenice NavajoWhite
    Mokasín Světle růžová Gainsboro PeachPuff Růžový Bisque LightGoldenrod Blanšírovaná mandle
    Citronový šifon Béžový AntiqueWhite PapayaWhip Cornsilk Světle žlutá Světle azurová Prádlo
    Levandule MistyRose OldLace Bílý kouř Mušle Slonová kost Medovice AliceBlue
    Levandulová tvářenka Mátový krém Sníh Bílý



V paměti počítače zabírají hodnoty konstant a proměnných typu barva 4 bajty. Příklad použití takové proměnné v programu:

barva Paint_1 = C " 128 , 128 , 128 "; // Proměnné je přiřazena hodnota šedá
barva Colo = C " 0 x 00 , 0 x 00 , 0 xFF "; // Proměnné je přiřazena hodnota modrá
barva BMP_4 = C " 0 xFF , 0 x 33 , 0 x 00 "

barva K_12 = 0 xFF3300 ; // Proměnné je přiřazena hodnota červená
barva N_3 = 0 x008000 ;
barva Barva = 16777215 ;
barva Alfa = 32768 ; // Proměnné je přiřazena hodnota zelená

barva A = červená ; // Proměnné je přiřazena hodnota červená
barva B = žlutá ; // Proměnné je přiřazena hodnota žlutá
barva Colorit = Černá ; // Proměnné je přiřazena hodnota černá
barva B_21 = Bílá ; // Proměnné je přiřazena hodnota bílá

typ datum a čas

Zadejte hodnotu čas schůzky je hodnota data a času.

Hodnoty tohoto typu lze v programech použít k analýze okamžiku začátku nebo konce jakékoli události, včetně zveřejnění důležitých zpráv, začátku/konce pracovního dne atd. Konstanty data a času mohou být reprezentovány jako doslovný řetězec, který se skládá ze 6 částí, představujících číselnou hodnotu roku, měsíce, data (nebo data, měsíce, roku), hodiny, minuty a sekundy.

Konstanta je ohraničena jednoduchými uvozovkami a začíná znakem D. Je povolena zkrácená hodnota: buď bez data, bez času, nebo s prázdnou hodnotou. Rozsah změn hodnot: od 1. ledna 1970 do 31. prosince 2037. V paměti počítače zabírají hodnoty konstant a proměnných datum a čas 4 bajty. Hodnota představuje počet sekund, které uplynuly od 00:00 1. ledna 1970.

Příklad použití proměnné typu datetime v programu:

datum a čas Alfa = D "2004.01.01 00: 00"; // Nový rok
datum a čas Tim = D "01/01/2004"; // Nový rok
datum a čas Tims = D "2005.05.12 16:30:45";
datum a čas N_3 = D "05/12/2005 16:30:45"; // 12. května 2005 16 hodin 30 minut 45 sekund
datetime Kompilace = D ""; // ekvivalent D"[datum kompilace] 00:00:00"

Deklarování a inicializace proměnných

Aby se zajistilo, že program během výpočtů nebude mít otázky, k jakému typu dat ta či ona proměnná patří, přijalo MQL4 povinné pravidlo, které výslovně uvádí typ proměnných na samém začátku programu. Než se proměnná může zúčastnit jakýchkoli výpočtů, musí být deklarována.

Variabilní prohlášení- toto je první zmínka o proměnné v programu. Při deklaraci proměnné je uveden její typ.

Inicializace proměnné- tím se mu při deklaraci přiřadí hodnota odpovídající jeho typu. Libovolnou proměnnou lze inicializovat. Pokud není explicitně zadána žádná počáteční hodnota, pak se číselná proměnná inicializuje na nulu (0) a řetězcová proměnná se inicializuje na prázdný řetězec.

Proměnná může být deklarována na samostatném řádku:

int Var_1 ; // Deklarace proměnné na samostatném řádku

Tento záznam znamená, že bude použita proměnná Var_1 (samotná deklarace proměnné) a typ této proměnné je int.

Je povoleno deklarovat několik proměnných stejného typu na jednom řádku:

int Var_1, Box, Comm; // Deklarace více proměnných na jednom řádku

Toto zadání znamená, že budou použity proměnné Var_1, Box a Comm a typ těchto proměnných je int, to znamená, že uvedené proměnné bude program brát v úvahu jako proměnné typu integer.


Je povoleno inicializovat proměnné v příkazech:

double Var_5 = 3,7 ; // Inicializace proměnné v příkazu přiřazení

Tento záznam znamená, že bude použita proměnná Var_5 typu real s počáteční hodnotou 3,7.

Nikde v následujících řádcích programu není uveden typ proměnných. Pokaždé, když program přistupuje k proměnné, bude si pamatovat, že tato proměnná je typu určeného při deklaraci. Jak výpočty v programu postupují, hodnoty proměnných se mohou měnit, ale typ proměnných se nemění.

Název proměnné nemá nic společného s typem proměnné, tzn. Není možné posoudit její typ podle názvu proměnné. Stejný název proměnné v různých programech lze použít pro proměnné libovolného typu. Ale v rámci jednoho programu lze typ libovolné proměnné deklarovat pouze jednou. Během provádění programu se typ deklarované proměnné nemění.

Příklady deklarace a inicializace proměnných

Proměnné mohou být deklarovány na více řádcích nebo na jednom řádku.

Je povoleno deklarovat několik proměnných stejného typu současně. V tomto případě jsou proměnné uvedeny oddělené čárkami a na konci řádku je umístěn středník.



Rýže. 12. Příklady deklarování proměnných na samostatném řádku.


Typ proměnných je deklarován jednou, když je proměnná zmíněna poprvé. Během druhé a dalších zmínek o proměnné není její typ uveden.



Rýže. 13. Příklady deklarování proměnných na samostatném řádku.


Deklarace a inicializace proměnných v příkazech je povolena.



Rýže. 14. Příklady inicializace proměnných.



Rýže. 15. Inicializace proměnné v hlavičce složeného příkazu.




Horní