Tietotyypit c reaaliluvut. Kokonaislukutietotyyppien etuliitteet. Esimerkkejä muuttujan ilmoittamisesta ja alustuksesta

SISÄÄN Tämä alue Tärkeimmät tietotyypit C++:ssa otetaan huomioon. Näitä tietotyyppejä kutsutaan myös sisäänrakennetuiksi. C++-ohjelmointikieli on laajennettava ohjelmointikieli. Termi laajennettavissa tarkoittaa, että sisäänrakennettujen tietotyyppien lisäksi voit luoda omia tietotyyppejä. Siksi C++:ssa on suuri määrä tietotyypit. Tutkimme vain tärkeimpiä.

Taulukko 1 - C++-tietotyypit
Tyyppi tavu Hyväksytyt arvot

kokonaisluku (boolean) tietotyyppi

bool 1 0 / 255

kokonaisluku (merkki) tietotyyppi

hiiltyä 1 0 / 255

kokonaislukutietotyypit

lyhyt int 2 -32 768 / 32 767
allekirjoittamaton lyhyt väliv 2 0 / 65 535
int 4
allekirjoittamaton int 4 0 / 4 294 967 295
pitkä int 4 -2 147 483 648 / 2 147 483 647
allekirjoittamaton pitkä välit 4 0 / 4 294 967 295

liukulukutietotyypit

kellua 4 -2 147 483 648.0 / 2 147 483 647.0
pitkä kellua 8
kaksinkertainen 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

Taulukko 1 näyttää tärkeimmät tietotyypit C++:ssa. Koko taulukko on jaettu kolmeen sarakkeeseen. Ensimmäinen sarake osoittaa varattu sana, joka määrittää kukin oman tietotyyppinsä. Toinen sarake osoittaa muuttujalle varattujen tavujen määrän vastaavalla tietotyypillä. Kolmas sarake näyttää alueen hyväksyttäviä arvoja. Huomaa, että taulukossa kaikki tietotyypit on järjestetty pienimmästä suurimpaan.

bool-tietotyyppi

Taulukon ensimmäinen on tyyppi data bool kokonaislukutietotyyppi, koska kelvollisten arvojen alue on kokonaislukuja 0-255. Mutta kuten jo huomasit, se on kirjoitettu suluissa - boolen tyyppi dataa, ja tämä on myös totta. Koska bool käytetään yksinomaan Boolen lausekkeiden tulosten tallentamiseen. Boolen lausekkeella voi olla toinen kahdesta tuloksesta: tosi tai epätosi. totta - jos looginen ilmaus tosi, epätosi - jos looginen lauseke on epätosi.

Mutta koska bool-tietotyypin kelvollisten arvojen alue on 0 - 255, tämä alue oli jotenkin sovitettava ohjelmointikielessä määriteltyihin loogisiin vakioihin tosi ja false. Näin ollen vakio tosi vastaa kaikkia lukuja 1-255 mukaan lukien, kun taas vakio false vastaa vain yhtä kokonaislukua - 0. Tarkastellaan ohjelmaa, joka käyttää bool-tietotyyppiä.

// data_type.cpp: Määrittää konsolisovelluksen aloituspisteen. #include "stdafx.h" #include käyttäen nimiavaruutta std; int main(int argc, char* argv) ( bool = 25; // tyyppinen muuttuja bool, jonka nimi on boolean if (boolean) // if-lauseen cout ehto<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

SISÄÄN rivi 9tyyppimuuttuja ilmoitettu bool , joka alustetaan arvoon 25. Teoriassa sen jälkeenrivit 9, Boolen muuttujassa pitäisi sisältää luvun 25, mutta itse asiassa tämä muuttuja sisältää luvun 1. Kuten sanoin, numero 0 on väärä arvo, numero 1 on tosi arvo. Pointti on, että muuttujassa kuten bool voi sisältää kaksi arvoa - 0 (false) tai 1 (tosi). Tietotyypin alla bool kokonainen tavu on varattu, mikä tarkoittaa, että tyyppinen muuttuja bool voi sisältää numeroita välillä 0 - 255. Väärien ja todellisten arvojen määrittämiseen tarvitaan vain kaksi arvoa 0 ja 1. Herää kysymys: "Mitä varten muut 253 arvoa ovat?"

Tämän tilanteen perusteella sovimme, että käytämme lukuja 2-255 luvun 1, eli totuuden, vastineena. Juuri tästä syystä boolen muuttuja sisältää luvun 25 eikä 1. In rivit 10-13 ilmoitettu, joka siirtää hallinnan operaattorille rivi 11, jos ehto on tosi, ja operaattori sisään rivi 13, jos ehto on väärä. Ohjelman tulos näkyy kuvassa 1.

True = 1 Jatka painamalla mitä tahansa näppäintä. . .

Kuva 1 - bool-tietotyyppi

Tietotyyppi char

Char-tietotyyppi on kokonaislukutietotyyppi, jota käytetään edustamaan merkkejä. Eli jokainen merkki vastaa tiettyä numeroa alueella. Char-tietotyyppiä kutsutaan myös merkkitietotyypiksi, koska merkkien graafinen esittäminen C++:ssa on mahdollista charin ansiosta. Merkkien esittämiseksi C++:ssa char-tietotyypille on varattu yksi tavu, yksi tavu sisältää 8 bittiä, sitten nostetaan kaksi potenssiin 8 ja saadaan arvo 256 - koodattavissa olevien merkkien määrä. Siten käyttämällä char-tietotyyppiä voit näyttää minkä tahansa 256 merkistä. Kaikki koodatut merkit esitetään muodossa .

ASCII (englanniksi Standard Code for Information Interchange) - amerikkalainen standardikoodi tiedonvaihtoon.

Harkitse ohjelmaa, joka käyttää char-tietotyyppiä.

// symbols.cpp: Määrittää konsolisovelluksen aloituspisteen. #include "stdafx.h" #include käyttäen nimiavaruutta std; int main(int argc, char* argv) ( char symboli = "a"; // char-tyypin muuttujan ilmoittaminen ja sen alustaminen symbolilla "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

Joten sisään rivi 9muuttuja nimeltä symboli , sille on määritetty symboliarvo"a" ( ASCII-koodi). SISÄÄN rivi 10 cout-operaattori tulostaa muuttujan sisältämän merkin symboli SISÄÄN rivi 11ilmoitti merkkijonotaulukon nimellä merkkijono , ja taulukon koko on määritetty implisiittisesti. Merkkijono tallennetaan merkkijonotaulukkoon"verkkosivusto" . Huomaa, että kun tallensimme symbolin muuttujaksi like hiiltyä , sitten yhtäläisyysmerkin jälkeen laitamme yksittäisiä lainausmerkkejä, joihin kirjoitimme symbolin. Kun alustetaan merkkijonotaulukko tietyllä merkkijonolla, yhtäläisyysmerkin jälkeen laitetaan lainausmerkit, johon tietty merkkijono kirjoitetaan. Kuten tavallinen merkki, merkkijonot tulostetaan käyttämällä operaattoria cout, rivi 12. Ohjelman tulos näkyy kuvassa 2.

Symboli = merkkijono = sivusto Jatka painamalla mitä tahansa näppäintä. . .

Kuva 2 - char-tietotyyppi

Kokonaislukutietotyypit

Kokonaislukutietotyyppejä käytetään esittämään lukuja. Niitä on kuusi taulukossa 1: lyhyt int, unsigned short int, int, unsigned int, long int, unsigned long int . Niillä kaikilla on oma muistikokonsa ja hyväksyttyjen arvojensa alue. Kääntäjästä riippuen varatun muistin koko ja hyväksyttyjen arvojen alue voivat vaihdella. Taulukossa 1 on kaikki MVS2010-kääntäjän hyväksytyt arvot ja varatun muistin koot. Lisäksi kaikki taulukon 1 tietotyypit on järjestetty kasvavaan järjestykseen varatun muistin koon ja hyväksyttyjen arvojen alueen mukaan. Hyväksyttyjen arvojen alue, tavalla tai toisella, riippuu varatun muistin koosta. Vastaavasti mitä suurempi varatun muistin koko on, sitä suurempi on hyväksyttyjen arvojen alue. Myös hyväksyttyjen arvojen alue muuttuu, jos tietotyyppi ilmoitetaan etuliitteellä. Etuliite unsigned tarkoittaa, että tietotyyppi ei voi tallentaa etumerkittyjä arvoja, jolloin positiivisten arvojen alue kaksinkertaistuu, esimerkiksi tietotyypit short int ja unsigned short int .

Kokonaislukutietotyyppien etuliitteet:

lyhyt etuliite lyhentää tietotyyppiä, johon sitä käytetään, vähentämällä sen käyttämän muistin kokoa;

pitkä etuliite laajentaa tietotyyppiä, johon sitä käytetään, lisäämällä sen käyttämän muistin kokoa;

unsigned—etuliite kaksinkertaistaa positiivisten arvojen alueen, kun taas negatiivisten arvojen aluetta ei voida tallentaa tähän tietotyyppiin.

Joten pohjimmiltaan meillä on yksi kokonaislukutyyppi edustamaan kokonaislukuja: int-tietotyyppi. Lyhyt, pitkä, etuliitetön etuliitteiden ansiosta ilmestyy tietty valikoima int-tietotyyppejä, jotka eroavat varatun muistin koosta ja (tai) hyväksyttyjen arvojen vaihteluvälistä.

Liukulukutietotyypit

C++:ssa on kahdenlaisia ​​liukulukutietoja: float ja double. Liukulukutietotyypit on suunniteltu tallentamaan liukulukuja. Liukuluku- ja kaksoistietotyypit voivat tallentaa sekä positiivisia että negatiivisia liukulukuja. Kelluvan tietotyypin muistitila on puolet kaksoistietotyypistä, mikä tarkoittaa, että myös hyväksyttyjen arvojen alue on pienempi. Jos float-tietotyyppi ilmoitetaan pitkällä etuliitteellä, hyväksyttyjen arvojen alue on yhtä suuri kuin kaksoistietotyypin hyväksyttyjen arvojen alue. Pohjimmiltaan liukulukutietotyyppejä tarvitaan ratkaisemaan ongelmia suurella laskennallisella tarkkuudella, kuten rahatapahtumia.

Joten olemme tarkastelleet pääkohtia C++:n tärkeimmistä tietotyypeistä. Jäljelle jää vain näyttää, mistä kaikki nämä hyväksyttyjen arvojen alueet ja varatun muistin koot ovat peräisin. Ja tätä varten kehitämme ohjelman, joka laskee kaikkien edellä käsiteltyjen tietotyyppien pääominaisuudet.

// data_types.cpp: Määrittää konsolisovelluksen aloituspisteen. #include "stdafx.h" #include // I/O-käsittelykirjasto #include // matemaattisten funktioiden otsikkotiedosto #include käyttäen nimiavaruutta std; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // sarakeotsikot <<"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; }

Tämä ohjelma on lähetetty, jotta voit tarkastella järjestelmäsi tietotyyppien ominaisuuksia. Koodia ei tarvitse ymmärtää, koska ohjelma käyttää ohjauslauseita, joita et todennäköisesti vielä tunne. Jotta voisin tutustua ohjelmakoodiin pinnallisesti, selitän alla joitain kohtia. Operaattori koko() Laskee tietotyypille tai muuttujalle varattujen tavujen määrän. Toiminto pow(x,y) nostaa merkitystä x y:n potenssiin , tämä toiminto on saatavilla otsikkotiedostosta . kiinteät ja setprecision()-manipulaattorit saatavilla otsikkotiedostosta . Ensimmäinen on kiinteä , välittää arvot kiinteässä muodossa lähtövirtaan. Manipulaattori setprecision(n) näyttää n desimaalin tarkkuudella. Tietyn tietotyypin enimmäisarvo lasketaan seuraavalla kaavalla:

Max_val_type = 2^(b * 8 - 1) - 1; // tietotyypeille, joissa on negatiiviset ja positiiviset luvut // jossa b on tämän tietotyypin muuttujalle muistiin varattujen tavujen määrä // kerrotaan 8:lla, koska yhdessä tavussa on 8 bittiä // vähennä suluissa oleva 1, koska alueen numerot on jaettava kahteen positiivisille ja negatiivisille arvoille // vähennä 1 lopussa, koska lukualue alkaa nollasta // tietotyypit etuliitteellä max_val_type = 2^(b * 8) - 1; // vain positiivisia lukuja sisältäville tietotyypeille // kaavan selitykset ovat samanlaiset, vain yksikköä ei vähennetä suluista

Esimerkki ohjelman toiminnasta on nähtävissä kuvassa 3. Ensimmäinen sarake näyttää tärkeimmät tietotyypit C++:ssa, toisessa sarakkeessa kullekin tietotyypille varatun muistin koon ja kolmannessa sarakkeessa suurin arvo, jonka vastaava tietotyyppi voi sisältää. Minimiarvo on samanlainen kuin maksimi. Tietotyypeille, joissa on etuliite, pienin arvo on 0.

Tietotyyppi tavun maksimiarvo bool = 1 255,00 merkki = 1 255,00 lyhyt int = 2 32767,00 etumerkitön lyhyt int = 2 65535,00 int = 4 2147483647,00 etumerkitön int = 4 429 490 = 4 429 490 7 = 7,4 4,4 4,4 0 unsigned long int = 4 4294967295.00 float = 4 2147483647.00 double = 8 9223372036854775808.00 Jatka painamalla mitä tahansa näppäintä. . .

Kuva 3 - C++-tietotyypit

Jos esimerkiksi short int -tyyppiselle muuttujalle annetaan arvo 33000, bittiruudukko vuotaa yli, koska short int -tyypin muuttujan maksimiarvo on 32767. Toisin sanoen muuttujaan tallennetaan jokin muu arvo. tyyppiä short int, se on todennäköisesti negatiivinen. Koska olemme käsitelleet int-tietotyyppiä, on syytä huomata, että voit jättää int-avainsanan pois ja kirjoittaa esimerkiksi vain lyhyesti . Kääntäjä tulkitsee tällaisen merkinnän lyhyeksi int . Sama koskee pitkiä ja allekirjoittamattomia etuliitteitä. Esimerkiksi:

// lyhenne tietotyypille int short a1; // sama kuin lyhyt in long a1; // sama kuin pitkä int unsigned a1; // sama kuin unsigned int unsigned short a1; // sama kuin unsigned short int

Tämä huijauslehti sisältää tietoa C++-ohjelmointikielen tärkeimmistä tietotyypeistä ja niiden toteutuksen ominaisuuksista. Tietueen lopussa on myös taulukko, jossa on näiden tyyppien arvoalueet.

Tietotyypin käsite

Minkä tahansa ohjelman päätarkoitus on tietojen käsittely. Erityyppisiä tietoja tallennetaan ja käsitellään eri tavalla. Jokaisella algoritmisella kielellä jokaisella vakiolla, muuttujalla, lausekkeella tai funktiolla on oltava tietty tyyppi.

Tietotyyppi määrittelee:

  • tietojen sisäinen esittäminen tietokoneen muistissa;
  • arvojoukko, jonka tämän tyyppiset määrät voivat ottaa;
  • operaatioita ja funktioita, joita voidaan soveltaa tämän tyyppisiin suureisiin.

Näiden ominaisuuksien perusteella ohjelmoija valitsee kunkin ohjelmassa käytetyn suuren tyypin edustamaan todellisia objekteja. Vaaditun tyyppimäärityksen avulla kääntäjä voi tarkistaa eri ohjelmarakenteiden oikeellisuuden. Arvon tyyppi määrittää koneen ohjeet, joita käytetään tietojen käsittelemiseen.

Kaikentyyppiset C++-kielet voidaan jakaa perus Ja komposiitti . C++-kieli määrittelee kuusi pää tietotyypit edustamaan kokonaisluku-, reaali-, merkki- ja loogisia arvoja. Näiden tyyppien perusteella ohjelmoija voi syöttää kuvauksen komposiitti tyypit. Näitä ovat taulukot, luettelot, funktiot, rakenteet, viittaukset, osoittimet, liitot ja luokat.

Perustietotyypit C++:ssa

Perustietotyyppejä (vakio) kutsutaan usein aritmeettisiksi, koska niitä voidaan käyttää aritmeettisissa operaatioissa. Päätyyppien kuvaamiseksi määritellään seuraavat:

  1. int(int);
  2. char(char);
  3. wchar_t(laajakuva);
  4. bool(boolen);
  5. kellua (todellinen);
  6. kaksinkertainen (kaksinkertainen tarkkuus real).

Neljää ensimmäistä tyyppiä kutsutaan kokonaisluvuiksi ( koko ), kaksi viimeistä - liukulukutyypit . Koodi, jonka kääntäjä luo kokonaislukuarvojen käsittelyä varten, on erilainen kuin liukulukuarvojen koodi.

Niitä on neljä tyypin määrittäjä , joka selventää standardityyppien sisäistä esitystä ja arvoaluetta:

  • lyhyt (lyhyt);
  • pitkä (pitkä);
  • allekirjoitettu(allekirjoitettu);
  • allekirjoittamaton.

Kokonaislukutyyppi (int)

Int-tyypin kokoa ei ole määritelty standardissa, vaan se riippuu tietokoneesta ja kääntäjästä. 16-bittiselle prosessorille tämän tyyppisille arvoille on varattu 2 tavua, 32-bittiselle prosessorille - 4 tavua.

Lyhyt täsmennys ennen tyypin nimeä osoittaa kääntäjälle, että numerolle on varattava 2 tavua prosessorin kapasiteetista riippumatta. Pitkä määrite tarkoittaa, että kokonaislukuarvo vie 4 tavua. Joten 16-bittisessä tietokoneessa vastineet ovat int ja short int, ja 32-bittisessä tietokoneessa vastineet ovat int ja long int.

Sisäinen edustus kokonaislukutyypin arvot - kokonaisluku binäärikoodissa. Käytettäessä etumerkillistä spesifieriä luvun merkittävin bitti tulkitaan etumerkittyksi (0 on positiivinen luku, 1 on negatiivinen luku). Etumerkitön määrittäjä sallii vain positiivisten lukujen esittämisen, koska merkittävintä bittiä käsitellään osana numeron koodia. Siten tyypin int arvojen alue riippuu määrityksistä. IBM PC -yhteensopivien tietokoneiden kokonaislukutyyppiarvojen arvoalueet erilaisilla määritteillä on taulukossa "Yksinkertaisten tietotyyppien arvoalueet" merkinnän lopussa.

Oletusarvoisesti kaikki kokonaislukutyypit katsotaan allekirjoitetuiksi, mikä tarkoittaa, että allekirjoitettu määrittäjä voidaan jättää pois.

Ohjelmasta löytyvät vakiot määritetään tyypin mukaan. Jos ohjelmoija ei jostain syystä ole tyytyväinen tähän tyyppiin, hän voi nimenomaisesti ilmoittaa vaaditun tyypin jälkiliitteillä L, l (pitkä) ja U, u (allekirjoittamaton). Esimerkiksi vakio 32L on tyyppiä pitkä ja vie 4 tavua. Voit käyttää L- ja U-liitteitä samanaikaisesti, esimerkiksi 0x22UL tai 05Lu.

Huomautus

Tyypit short int, long int, signed int ja unsigned int voidaan lyhentää muotoiksi short, long, signed ja unsigned.

Merkkityyppi (merkki)

Merkkityypin arvolle on varattu tavumäärä, joka on riittävä mahtumaan minkä tahansa merkin merkistöstä tietylle tietokoneelle, mikä määrittää tyypin nimen. Tyypillisesti tämä on 1 tavu. Merkkityyppi, kuten muutkin kokonaislukutyypit, voi olla etumerkitty tai allekirjoittamaton. Etumerkilliset arvot voivat tallentaa arvoja välillä -128 - 127. Etumerkittömällä määrittimellä arvot voivat vaihdella välillä 0 - 255. Tämä riittää tallentamaan minkä tahansa merkin 256 merkin ASCII-merkistössä. Char-tyypin arvoja käytetään myös tallentamaan kokonaislukuja, jotka eivät ylitä määritettyjen alueiden rajoja.

Laajennettu merkkityyppi (wchar_t)

wchar_t-tyyppi on suunniteltu toimimaan merkkijoukon kanssa, jolle 1 tavu ei riitä esimerkiksi Unicoden koodaamiseen. Tämän tyypin koko riippuu toteutuksesta; yleensä se vastaa tyyppiä short. Wchar_t-tyyppiset merkkijonovakiot kirjoitetaan etuliitteellä L, esimerkiksi L»Gates».

Boolen tyyppi (bool)

Boolen arvot voivat ottaa vain arvot tosi ja epätosi, jotka ovat varattuja sanoja. Epätosi arvon sisäinen esitysmuoto on 0 (nolla). Kaikki muut arvot tulkitaan todeksi. Kun se muunnetaan kokonaislukutyypiksi, tosi on arvo 1.

Liukulukutyypit (float, double ja long double)

C++-standardi määrittelee kolme tietotyyppiä todellisten arvojen tallentamista varten: float, double ja long double.

Liukulukutietotyypit tallennetaan tietokoneen muistiin eri tavalla kuin kokonaislukutietotyypit. Reaaliluvun sisäinen esitys koostuu kahdesta osasta - mantissasta ja eksponentista. IBM PC -yhteensopivissa tietokoneissa float-arvot vievät 4 tavua, joista yksi binäärinumero on varattu mantissamerkille, 8 bittiä eksponenteille ja 23 mantissalle. Mantissa on luku, joka on suurempi kuin 1,0, mutta pienempi kuin 2,0. Koska mantissan etunumero on aina 1, sitä ei tallenneta.

Kaksoisarvoille, jotka vievät 8 tavua, 11 ja 52 bittiä varataan eksponenttia ja mantissaa varten. Mantissan pituus määrää luvun tarkkuuden, ja eksponentin pituus määrää sen alueen. Kuten merkinnän lopussa olevasta taulukosta näkyy, kun float- ja long int -arvoille on varattu sama määrä tavuja, niiden sallittujen arvojen alueet vaihtelevat suuresti sisäisen esitysmuodon vuoksi.

Pitkä määrite ennen kaksoistyypin nimeä osoittaa, että sen arvolle on varattu 10 tavua.

Liukulukuvakiot ovat oletusarvoisesti kaksinkertaisia. Voit määrittää vakion tyypin suoraan käyttämällä jälkiliitteitä F, f (float) ja L, l (pitkä). Esimerkiksi vakio 2E+6L on tyyppiä long double ja vakio 1.82f on tyyppiä float.

Kirjoittaaksesi ohjelmia, jotka ovat kannettavia eri alustoilla, et voi tehdä oletuksia int-tyypin koosta. Sen saamiseksi sinun on käytettävä operaation size-arvoa, jonka tuloksena on tyypin koko tavuina. Esimerkiksi MS-DOS-käyttöjärjestelmässä sizeof (int) on 2, mutta Windows 98:ssa tai OS/2:ssa tulos on 4.

ANSI-standardi ei määrittele perustyypeille arvoalueita, vain niiden kokojen väliset suhteet määritellään, esimerkiksi:

koko (kelluke) ≤ slzeof (double) ≤ koko (pitkä tupla)
koko(char) ≤ slzeof(lyhyt) ≤ sizeof(int) ≤ koko(pitkä)

Huomautus

Kokonaislukutyyppien sallitut vähimmäis- ja enimmäisarvot ovat toteutuskohtaisia ​​ja ne annetaan otsikkotiedostossa (), todellisten tyyppien ominaisuudet - tiedostossa (), sekä numeric_limits-luokkamallissa

tyyppi tyhjä

Listattujen lisäksi kielen päätyypit sisältävät void-tyypin, mutta tämän tyypin arvot ovat tyhjät. Sitä käytetään funktioiden määrittämiseen, jotka eivät palauta arvoa, tyhjän funktion argumenttien luettelon määrittämiseen, osoittimien perustyypiksi ja tyypin casting-operaatioissa.

Yksinkertaisten tietotyyppien arvoalueet C++:ssa IBM PC -yhteensopiville tietokoneille

K: Mitä termi IBM PC -yhteensopiva tietokone tarkoittaa?
V: IBM PC -yhteensopiva tietokone on tietokone, joka on arkkitehtonisesti lähellä IBM PC:tä, XT:tä ja AT:tä. IBM PC-yhteensopivat tietokoneet on rakennettu Intel 8086:n kanssa yhteensopiville mikroprosessoreille (ja kuten tiedät, kaikki myöhemmät Intel-prosessorit ovat täysin taaksepäin yhteensopivia 8086:n kanssa). Itse asiassa nämä ovat melkein kaikki nykyaikaisia ​​tietokoneita.

Erityyppisiä kokonaisluku- ja reaalityyppejä, jotka eroavat tietojen esittämisen laajuudesta ja tarkkuudesta, otettiin käyttöön, jotta ohjelmoija voisi käyttää tehokkaimmin tiettyjen laitteiden ominaisuuksia, koska laskennan nopeus ja muistin määrä riippuvat tyypin valinta. Mutta yhdelle tietokonetyypille optimoitu ohjelma ei välttämättä ole siirrettävissä muille alustoille, joten yleensä kannattaa välttää turvautumasta tietotyyppien tiettyihin ominaisuuksiin.

Tyyppi Arvoalue Koko (tavua)
bool totta ja tarua 1
allekirjoitettu char -128 … 127 1
allekirjoittamaton merkki 0 … 255 1
allekirjoitettu lyhyt int -32 768 … 32 767 2
allekirjoittamaton lyhyt väliv 0 … 65 535 2
allekirjoitettu pitkä int -2 147 483 648 … 2 147 483 647 4
allekirjoittamaton pitkä välit 0 … 4 294 967 295 4
kellua 3,4e-38 … 3,4e+38 4
kaksinkertainen 1,7e-308 … 1,7C+308 8
pitkä tupla 3,4e-4932 … 3,4e+4932 10

Todellisille tyypeille taulukko näyttää minimi- ja maksimiarvojen absoluuttiset arvot.

Liukulukuluvut käyttävät IEEE (Institute of Electrical and Electronics Engineers) -muotoa. Yhden tarkkuuden arvoilla float-tyypillä on 4 tavua, jotka koostuvat etumerkkibitistä, 8-bittisestä ylimääräisestä 127-binäärieksponentista ja 23-bittisestä mantissasta. Mantissa edustaa lukua välillä 1,0 ja 2,0. Koska mantissan korkean kertaluvun bitti on aina 1, sitä ei tallenneta numeroon. Tämä esitys antaa vaihteluvälin noin 3,4E-38 - 3,4E+38 float-tyypin osalta.

Voit ilmoittaa muuttujat float- tai double-muotoisiksi sovelluksesi tarpeiden mukaan. Tärkeimmät erot näiden kahden tyypin välillä ovat niiden edustama merkitys, niiden vaatima tallennustila ja valikoima. Seuraavassa taulukossa näkyy merkittävyyden ja säilytysvaatimusten välinen suhde.

Liukulukutyypit

Tyyppi Merkittäviä numeroita Tavujen määrä
kellua 6 - 7 4
kaksinkertainen 15 - 16 8

Liukulukumuuttujia edustaa mantissa, joka sisältää luvun arvon, ja eksponentti, joka sisältää luvun suuruusluokan.

Seuraava taulukko näyttää mantissalle allokoitujen bittien lukumäärän ja eksponentin kullekin liukulukutyypille. Minkä tahansa floatin tai tuplauksen merkitsevin bitti on aina etumerkkibitti. Jos se on 1, lukua pidetään negatiivisena; muuten sitä pidetään positiivisena lukuna.

Eksponenttien ja mantissien pituudet

Tyyppi Eksponentin pituus Mantissa pituus
kellua 8 bittiä 23 bittiä
kaksinkertainen 11 bittiä 52 bittiä

Koska eksponentit tallennetaan etumerkittömässä muodossa, eksponentti on biasoitu puolella sen mahdollisesta arvosta. Float-tyypin bias on 127; tyypille double se on 1023. Voit laskea todellisen eksponentin arvon vähentämällä bias-arvon eksponentin arvosta.

Mantissa tallennetaan binäärimurtolukuna, joka on suurempi tai yhtä suuri kuin 1 ja pienempi kuin 2. Float- ja double-tyypeissä mantissassa on oletettu johtava 1 tärkeimmässä bittipaikassa, joten mantissat ovat itse asiassa 24 ja 53 bittiä, vastaavasti, vaikka merkittävintä bittiä ei koskaan tallennettaisi muistiin.

Juuri kuvatun tallennusmenetelmän sijaan liukulukupaketti voi tallentaa binäärisiä liukulukuja denormalisoituina lukuina. "Denormalisoidut luvut" ovat nollasta poikkeavia liukulukuja, joissa on varatut eksponenttiarvot, joissa mantissan merkittävin bitti on 0. Denormalisoitua muotoa käyttämällä liukulukuluvun aluetta voidaan laajentaa hinnalla tarkkuutta. Et voi hallita sitä, esitetäänkö liukuluku normalisoidussa vai denormalisoidussa muodossa. liukulukupaketti määrittää esityksen. Liukulukupaketti ei koskaan käytä denormalisoitua muotoa, ellei eksponentti ole pienempi kuin minimi, joka voidaan esittää normalisoidussa muodossa.

Seuraavassa taulukossa näkyvät vähimmäis- ja enimmäisarvot, jotka voit tallentaa kunkin liukulukutyypin muuttujiin. Tässä taulukossa luetellut arvot koskevat vain normalisoituja liukulukuja; denormalisoiduilla liukulukuluvuilla on vähintään pienempi arvo. Huomaa, että luvut säilyvät 80:ssä x 87 rekisteriä esitetään aina 80-bittisessä normalisoidussa muodossa; luvut voidaan esittää vain denormalisoidussa muodossa, kun ne tallennetaan 32-bittisiin tai 64-bittisiin liukulukumuuttujiin (muuttujat tyyppiä float ja type long).

Valikoima liukulukutyyppejä

Tyyppi Minimiarvo Suurin arvo
kellua 1,175494351 E-38 3,402823466 E+38
kaksinkertainen 2.2250738585072014 E-308 1,7976931348623158 E+308

Jos tarkkuus on vähemmän tärkeä asia kuin tallennus, harkitse float-tyypin käyttämistä liukulukumuuttujille. Toisaalta, jos tarkkuus on tärkein kriteeri, käytä tyyppiä double.

Liukulukumuuttujat voidaan nostaa tyyppiin, jolla on suurempi merkitys (tyypistä float tyyppiin double). Ylennys tapahtuu usein, kun suoritat aritmeettisia liukulukumuuttujia. Tämä aritmetiikka tehdään aina yhtä suurella tarkkuudella kuin muuttuja, jolla on suurin tarkkuus. Harkitse esimerkiksi seuraavia tyyppiilmoituksia:

Float f_short; double f_long; pitkä double f_longer; f_short = f_short * f_long;

Edellisessä esimerkissä muuttuja f_short ylennetään tyypiksi double ja kerrotaan f_long :lla; sitten tulos pyöristetään tyyppiin float ennen kuin se määritetään f_short :ksi.

Seuraavassa esimerkissä (jossa käytetään edellisen esimerkin ilmoituksia) aritmetiikka suoritetaan kelluvassa (32-bittisessä) tarkkuudessa muuttujille; tulos ylennetään sitten tyyppiin double:

F_pidempi = f_lyhyt * f_lyhyt;

Katso myös

Palaute

Haluaisimme kuulla ajatuksesi. Valitse haluamasi tyyppi.

Reaalilukujen tallentamiseen käytetään float- (yksi tarkkuus) ja kaksois (kaksinkertainen tarkkuus) tietotyyppejä. Merkkien "+" ja "-" merkitys reaalityypeille on sama kuin kokonaisluvuille. Viimeiset etunollat ​​desimaalipilkun oikealla puolella ohitetaan. Siksi merkinnät +523.5, 523.5 ja 523.500 edustavat samaa arvoa.

Reaalilukujen esittämiseen käytetään kahta muotoa:

kiinteä piste

[merkki][kokonaislukuosa].[murto-osa]

Esimerkiksi: –8.13; 0,168 (sama kuin 0,168); 183. (sama kuin 183.0).

liukuluku (eksponentiaalinen muoto) mantissa E/e järjestys

Esimerkki: 5,235e+02 (5,235 x 102 = 523,5); –3,4E-03 (–3,4 x 10-03 = – 0,0034)

Useimmissa tapauksissa käytetään kaksoistyyppiä, joka tarjoaa suuremman tarkkuuden kuin kelluva tyyppi. Suurin tarkkuus ja suurin lukualue saavutetaan käyttämällä pitkää kaksoistyyppiä.

Arvo, jossa on float-tyyppinen muuntaja, kestää 4 tavua. Näistä 1 bitti on varattu etumerkille, 8 bittiä ylieksponentille ja 23 bittiä mantissalle. Huomaa, että mantissan merkitsevin bitti on aina 1, joten sitä ei täytetä, ja siksi liukulukumuuttujan moduulialue on noin 3,14E–38 - 3,14E+38.

Kaksoisarvo vie muistista 8 tavua. Sen muoto on samanlainen kuin float-muoto. Muistibitit jakautuvat seuraavasti: 1 bitti etumerkille, 11 bittiä eksponenttia ja 52 bittiä mantissaa varten. Kun otetaan huomioon mantissan pois jätetty korkea bitti, kaksinkertaisten tarkkuusmuuttujien arvojen moduulien alue on 1,7E-308-1,7E+308.

Pitkä kaksoisarvo on sama kuin kaksoisarvo.

Esimerkiksi:

6. Merkin tietotyyppi (merkkityyppi)

C++-standardissa ei ole tietotyyppiä, jota voitaisiin pitää todella luonteeltaan. Merkkitietojen esittämiseksi on olemassa kaksi tähän tarkoitukseen sopivaa tietotyyppiä: char ja wchar_t.

Char-muuttuja on suunniteltu tallentamaan vain yksi merkki (esimerkiksi kirjain tai välilyönti). Tietokoneen muistissa merkit tallennetaan kokonaislukuina. Merkkien ja niiden koodien välinen vastaavuus määräytyy koodaustaulukon avulla, joka riippuu tietokoneesta ja käyttöjärjestelmästä. Lähes kaikki koodaustaulukot sisältävät latinalaisten aakkosten isoja ja pieniä kirjaimia, numeroita 0, ..., 9 ja joitain erikoismerkkejä. Yleisin koodaustaulukko on ASCII (American Standard Code for Information Interchange) -merkkitaulukko.

Koska merkit tallennetaan kokonaislukuina tietokoneen muistiin, char-tyyppi on itse asiassa int-tyypin osajoukko.

Merkkityypin arvolle on varattu 1 tavu.

Merkkityyppiä voidaan käyttää allekirjoitettujen ja allekirjoittamattomien määritteiden kanssa. Etumerkillisen merkin tietotyyppi voi tallentaa arvoja välillä -128 - 127. Etumerkittömällä merkkityypillä arvot voivat olla välillä 0 - 255. Koodaus on ASCII. Merkit, joiden koodit ovat 0-31, ovat palvelumerkkejä ja niillä on itsenäinen merkitys vain I/O-käskyissä.

Char-tyypin arvoja käytetään myös numeroiden tallentamiseen tietyiltä alueilta.

wchar_t-tyyppi on suunniteltu toimimaan merkkijoukon kanssa, jolle 1 tavu ei riitä koodaamaan esimerkiksi Unicode-koodauksella. wchar_t-tyypin koko on 2 tavua. Jos ohjelmassa on tarpeen käyttää wchar_t-tyyppisiä merkkijonovakioita, ne kirjoitetaan etuliitteellä L, esimerkiksi L "Word".

Esimerkiksi:

char r=("A", "B", "C", "D", "E", "F","\0");


Kaikki tietävät, että vain samantyyppisiä määriä voidaan lisätä ja vähentää. Esimerkiksi omenat voidaan laskea yhteen omenoilla, mutta omenoita ei voida laskea yhteen neliömetrillä tai lämpötilalla. Useimmilla nykyaikaisilla algoritmisilla kielillä on samanlaiset rajoitukset.

Aivan kuten tavallisilla esineillä on erilaisia ​​värin (punainen, sininen, keltainen, vihreä), maku (karvas, hapan, makea), määrä (puolitoista, kaksi, seitsemän) ominaisuuksia, MQL4-ohjelmointikielessä data vaihtelee tyypeittäin. . Kun puhumme tietotyypistä, tarkoitamme vakion arvon tyyppiä, muuttujaa ja funktion palauttamaa arvoa (funktion käsitettä käsitellään Funktiot-osiossa).

MQL4-kielessä erotetaan seuraavat tyypit (vakiot, muuttujat ja funktioiden palauttamat arvot):

Kirjoita int

Kirjoita arvot int- nämä ovat kokonaislukuja. Tämä tyyppi sisältää arvot, jotka ovat luonteeltaan olennaisia. Esimerkkejä kokonaisluvuista ovat: palkkien määrä rahoitusvälineen ikkunassa (16 000 bar), avointen ja vireillä olevien toimeksiantojen määrä (3 toimeksiantoa), etäisyys pisteinä rahoitusvälineen nykyisestä kurssista toimeksiannon avaushintaan (15 pistettä). Objektien, kuten tapahtumien, määrä voi myös olla vain kokonaislukuja. Esimerkiksi tilauksen avaamisyritysten lukumäärä ei voi olla puolitoista, vaan vain yksi, kaksi, kolme jne.

Kokonaislukuarvoja on 2 tyyppiä:

  • Desimaali arvot voivat koostua numeroista 0 - 9 ja ne voivat olla positiivisia tai negatiivisia: 10, 11, 12, 1, 5, -379, 25, -12345, -1, 2.
  • Heksadesimaali arvot voivat koostua latinalaisten aakkosten kirjaimista A:sta F:iin tai a:sta f:ään, numeroista 0:sta 9:ään, niiden on alettava 0x:llä tai 0X:llä ja niissä on oltava positiiviset ja negatiiviset arvot: 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1 .

Int-tyypin arvojen on oltava välillä -2 147 483 648 - 2 147 483 647. Jos vakion tai muuttujan arvo on määritetyn alueen ulkopuolella, ohjelman tulos on määrittelemätön. Tietokoneen muistissa int-tyypin vakioiden ja muuttujien arvot vievät 4 tavua.

Esimerkki int-muuttujan käyttämisestä ohjelmassa:

int Art = 10; // Esimerkki kokonaislukumuuttujasta
int B_27 = -1; // Esimerkki kokonaislukumuuttujasta
int Num = 21; // Esimerkki kokonaislukumuuttujasta
int Max = 2147483647 ; // Esimerkki kokonaislukumuuttujasta
int Min = - 2147483648 ; // Esimerkki kokonaislukumuuttujasta

Kirjoita kaksinkertainen

Kirjoita arvot kaksinkertainen ovat reaalilukuja, jotka sisältävät murto-osan.

Esimerkki tämän tyyppisistä arvoista ovat mitkä tahansa suuret, joiden arvossa voi olla murto-osa: tukilinjan kaltevuuskulma, rahoitusvälineen hinta, päivän aikana avattujen toimeksiantojen keskimääräinen lukumäärä.

Joskus ohjelmia kirjoitettaessa voi tulla vaikeuksia muuttujan tyypin määrittämisessä, eli ohjelmoijalle ei ole heti selvää, minkä tyyppinen (int vai double) muuttuja on. Katsotaanpa pientä esimerkkiä:

Ohjelma avasi 12 tilausta viikon sisällä. Millaisen muuttujan A tulisi olla, joka ottaa huomioon tämän ohjelman avaamien tilausten keskimääräisen määrän päivässä? Ilmeisesti vastaus on: A = 12 tilausta / 5 päivää. Toisin sanoen muuttuja A = 2.4 tulee ottaa ohjelmassa huomioon kaksoiskappaleena, koska tällä arvolla on murto-osa. Ja minkä tyyppinen tämän saman muuttujan A pitäisi olla, jos viikossa avattujen tilausten kokonaismäärä on 10? Näyttäisi siltä, ​​että jos 2:lla (10 tilausta / 5 päivää = 2) ei ole murto-osaa, niin muuttuja A voidaan ottaa huomioon int. Tämä päättely on kuitenkin virheellinen. Jonkin muuttujan nykyisessä arvossa voi olla vain nollia sisältävä murto-osa. Mutta tärkeintä on, että tämän muuttujan arvo on luonnostaan ​​voimassa. Tällöin myös muuttujan A tulee olla tyyppiä double, ja kirjoitettaessa vakiota ohjelmaan tulee jakopiste näyttää: A = 2.0


Reaalivakioiden ja muuttujien arvot koostuvat kokonaislukuosasta, desimaalipisteestä (.) ja murto-osasta. He voivat ottaa positiivisia ja negatiivisia arvoja. Kokonaisluvut ja murto-osat koostuvat luvuista 0 - 9. Merkitsevien numeroiden määrä desimaalipilkun jälkeen voi olla 15. Esimerkki:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Kaksoisarvojen alue on -1,7 * e-308 - 1,7 * e308. Tietokoneen muistissa kaksoistyypin vakioiden ja muuttujien arvot vievät 8 tavua.

Esimerkki kaksoismuuttujan käyttämisestä ohjelmassa:

double Art = 10,123 ;
kaksinkertainen B_27 = - 1,0 ; // Esimerkki reaalimuuttujasta
double Num = 0,5; // Esimerkki reaalimuuttujasta
kaksois-MMM = -12,07; // Esimerkki reaalimuuttujasta
kaksinkertainen hinta_1 = 1,2756 ; // Esimerkki reaalimuuttujasta

Kirjoita bool

Kirjoita arvot bool- nämä ovat loogisen tyyppisiä arvoja, joiden sisältö on väärä ja tosi.

Ymmärtääksemme paremmin loogisen tyypin käsitteen merkitystä, tarkastellaan pientä esimerkkiä jokapäiväisestä elämästä. Oletetaan, että opettajan on pidettävä kirjaa oppilaiden oppikirjoista. Tässä tapauksessa opettaja tekee luettelon opiskelijoista paperille ja rivin oikealle puolelle tekee muistiinpanot siitä, onko oppilaalla oppikirja vai ei. Hän voi esimerkiksi laittaa rastin ja viivan:

Luettelo opiskelijoista Fysiikan oppikirja Biologian oppikirja Kemian oppikirja
1 Ivanov V - -
2 Petrov V - V
3 Sidorov - V V
... ... ... ... ...
25 Mironov V V V

Oikeanpuoleisissa sarakkeissa olevissa arvoissa on vain 2 mahdollista arvoa: tosi tai epätosi. Näitä arvoja ei voida luokitella aiemmin käsitellyiksi tietotyypeiksi, koska ne eivät ole numeroita. Ne eivät myöskään ole värin, maun, määrän jne. arvoja. Siitä huolimatta niillä on tärkeä semanttinen kuorma. MQL4-kielessä tällaisia ​​arvoja kutsutaan loogisiksi. Bool-tyyppisten vakioiden ja muuttujien ominaisuus on, että ne voivat ottaa vain 2 mahdollista arvoa - tosi (tosi, tosi, TOSI, 1) tai epätosi (false, false, FALSE, 0). Tietokoneen muistissa bool-tyypin vakioiden ja muuttujien arvot vievät 4 tavua.

Esimerkki bool-tyyppisen muuttujan käytöstä ohjelmassa:

bool aa = Tosi ; // Boolen muuttujan aa arvo on tosi
bool B17 = TOSI ; // Boolen muuttuja B17 on tosi
bool Hamma = 1; // Boolen muuttuja Hamma on tosi

bool Asd = False ; // Boolen muuttuja Asd on epätosi
bool Nol = EPÄTOSI ; // Boolen muuttuja Nol on epätosi
bool Prim = 0; // Boolen muuttuja Prim on epätosi

Kirjoita merkkijono

Kirjoita arvo merkkijono on merkkijonoarvo, joka on joukko ASCII-merkkejä.

Tavallisessa elämässä esimerkiksi myymälöiden, automerkkien jne. nimillä on samanlainen sisältö Merkkijonotyyppinen arvo kirjoitetaan lainausmerkkien sisällä (älä sekoita lainausmerkkejä kahteen yksittäiseen lainausmerkkiin!). Lainausmerkkejä käytetään vain merkkijonovakion arvon alun ja lopun osoittamiseen, ja itse arvo on joukko merkkejä, joita ympäröivät lainausmerkit.

Jos joudut syöttämään kaksoislainausmerkkiä merkkijonoon, sen eteen on lisättävä kenoviiva: \. Merkkijonoon voidaan syöttää kaikki erikoismerkkivakiot, joita edeltää kenoviivamerkki \. Merkkijonovakion pituus on 0 - 255 merkkiä Jos merkkijonovakion pituus ylittää enimmäismäärän, oikealla olevat ylimääräiset merkit hylätään ja kääntäjä antaa vastaavan varoituksen. Kahden merkin yhdistelmä, joista ensimmäinen on kenoviiva \, on yleensä yleinen ja useimmat ohjelmat tulkitsevat sen osoituksena tietyn tekstin muotoilusta. Esimerkiksi yhdistelmä \n tarkoittaa rivinvaihdon tarvetta, \t tarkoittaa sarkainta jne.

Merkkijonotyypin arvo kirjoitetaan lainausmerkeissä olevien merkkien joukkona: "MetaTrader 4", "Stop Loss", "Ssssstop_Loss", "stoploss", "10 pistettä". Todellinen merkkijonoarvo on lainausmerkkien sisällä olevien merkkien joukko. Lainausmerkkejä käytetään vain osoittamaan arvon rajoja. Sisäinen esitys on 8-tavuinen rakenne.

Esimerkki merkkijonomuuttujan käyttämisestä ohjelmassa:

string Prefix = "MetaTrader 4";
string Postfix = "ohjelman____ OK"; // Esimerkki merkkijonomuuttujasta
string Name_Mass = "Historia"; // Esimerkki merkkijonomuuttujasta
merkkijono tekstiä ="Ylärivi\ n Bottom line"; // teksti sisältää rivinvaihtoja

Kirjoita väri

Kirjoita arvo väri on värityypin arvo.

Kaikki tietävät, mitä väri tarkoittaa: sininen, punainen, valkoinen, keltainen, vihreä. On helppo kuvitella, mitä värityypin muuttuja tai vakio tarkoittaa. Tämä on vakio tai muuttuja, jonka arvo on väri. Tämä saattaa tuntua hieman epätavalliselta, mutta pohjimmiltaan se on hyvin yksinkertainen. Aivan kuten kokonaislukuvakion arvo on luku, värivakion arvo on väri.

Värivakioiden ja muuttujien arvot voidaan esittää jollakin kolmesta tyypistä:

  • Literaalit

    Kirjaimellisessa värityypin arvossa on kolme osaa, jotka edustavat kolmen päävärikomponentin: punaisen, vihreän ja sinisen numeerisia intensiteettiarvoja. Tämän tyyppinen arvo alkaa merkillä C ja sitä ympäröivät lainausmerkit.

    Värikomponentin intensiteetin numeeriset arvot vaihtelevat välillä 0 - 255, ja ne voidaan kirjoittaa joko desimaali- tai heksadesimaalimuodossa.

    Esimerkkejä: C"128,128,128" (harmaa), C"0x00,0x00,0xFF" (sininen), C"0xFF,0x33,0x00" (punainen).

  • Kokonaislukuesitys

    Kokonaislukuesitys kirjoitetaan heksadesimaali- tai desimaalilukuna. Heksadesimaaliluku on muotoa 0xRRGGBB, jossa RR on värin punaisen komponentin intensiteettiarvo, GG on vihreä komponentti ja BB on sininen komponentti. Desimaalivakioilla ei ole suoraa heijastusta RGB:ssä. Ne edustavat hekdesimaaliarvoa.

    Värityyppiarvojen esittäminen kokonaislukuina ja heksadesimaalilukuina on erittäin kätevää. Useimmat nykyaikaiset teksti- ja graafiset editorit esittävät tietoa punaisten, sinisten ja vihreiden komponenttien sisällöstä valitussa väriarvossa. Riittää, kun valitset haluamasi värin editorissa ja kirjoitat tällä tavalla tunnistetut numerot uudelleen sopivaksi väriarvon esitykseksi.

    Esimerkkejä: 0xFFFFFF (valkoinen), 0x008000 (vihreä), 16777215 (valkoinen), 32768 (vihreä).


    Riisi. 11. Nykyaikaisissa editoreissa voit ottaa väriparametreja vakion väriarvon kirjaimelliseen ja kokonaislukumuotoon.

  • Värien nimet

    Helpoin tapa määrittää väri on määrittää sen nimi Web-väritaulukon mukaisesti. Tässä tapauksessa värin merkitystä edustaa väriin liittyvä sana, esimerkiksi punainen - punainen.

    Musta Tummanvihreä Tumma SlateGray Oliivi Vihreä Sinivihreä Laivasto Violetti
    Kastanjanruskea Indigo Yönsininen Tummansininen Tumman oliivinvihreä Satulanruskea Metsänvihreä Oliivinvihreä
    Meren vihreä Tumma Kultapiippu Tumma SlateBlue Sienna Keskisininen Ruskea Tumma turkoosi DimGray
    Vaalea Merenvihreä Tummanvioletti Tulenkestävä tiili Keskiviolettipunainen MediumSea Green Suklaa Crimson Teräksensininen
    Kultapuikko Medium Spring Green Nurmikonvihreä Kadetinsininen DarkOrchid Keltainen Vihreä Limenvihreä Oranssinpunainen
    Tummanoranssi Oranssi Kulta Keltainen Keltaisen vihreä Lime Keväänvihreä Aqua
    DeepSkyBlue Sininen Magenta Punainen harmaa Liuskeenharmaa Peru Sininen violetti
    Vaalea SlateGray Deep Pink Keskikokoinen turkoosi Dodger Blue Turkoosi Kuninkaallisen sininen Liuskeensininen Tumma khaki
    Intianpunainen Keskikokoinen orkidea Vihreä keltainen Keskikokoinen akvamariini Tummanmerenvihreä Tomaatti Ruusuinenruskea Orkidea
    Keskivaalea Vaaleanviolettipunainen Koralli Ruiskukansininen Tumman harmaa SandyBrown Medium SlateBlue Tan
    DarkSalmon BurlyWood Kuuma pinkki Lohi Violetti Vaalea koralli Taivaansininen Vaalea lohi
    Luumu Khaki Vaaleanvihreä Akvamariini Hopea Vaalea taivaansininen VaaleaSteelBlue Vaaleansininen
    Vaaleanvihreä Ohdake Puuterinsininen Vaalea kultainen Vaalea turkoosi Vaalean harmaa Vehnä Navajovalkoinen
    Mokkasiini Vaalea pinkki Gainsboro PeachPuff Vaaleanpunainen Äyriäiskeitto Vaalea kultakulta Blanšoitu manteli
    Sitruunasifonki Beige Antiikkivalkoinen PapayaWhip Cornsilkki Vaaleankeltainen Vaalea syaani Liinavaatteet
    Laventeli MistyRose Vanha Lace Valkoinen savu Kotilo Norsunluu Mesikaste AliceBlue
    LavenderBlush MintCream Lumi Valkoinen



Tietokoneen muistissa värityyppisten vakioiden ja muuttujien arvot vievät 4 tavua. Esimerkki tällaisen muuttujan käytöstä ohjelmassa:

väri Paint_1 = C " 128 , 128 , 128 "; // Muuttujalle annetaan arvo harmaa
väri Colo = C " 0 x 00 , 0 x 00 , 0 xFF "; // Muuttujalle annetaan arvo sininen
väri BMP_4 = C " 0 xFF , 0 x 33 , 0 x 00 "

väri K_12 = 0 xFF3300 ; // Muuttujalle annetaan arvo punainen
väri N_3 = 0 x008000 ;
väri Väri = 16777215 ;
väri Alfa = 32768 ; // Muuttujalle annetaan arvo vihreä

väri A = punainen ; // Muuttujalle annetaan arvo punainen
väri B = keltainen ; // Muuttujalle annetaan arvo keltainen
väri Colorit = musta ; // Muuttujalle on annettu arvo musta
väri B_21 = Valkoinen ; // Muuttujalle annetaan arvo valkoinen

päivämäärä-ajan tyyppi

Kirjoita arvo treffiaika on päivämäärän ja kellonajan arvo.

Tämän tyyppisiä arvoja voidaan käyttää ohjelmissa analysoimaan minkä tahansa tapahtuman alkamis- tai päättymishetkeä, mukaan lukien tärkeiden uutisten julkistaminen, työpäivän alku/loppu jne. Päivämäärä- ja aikavakiot voidaan esittää muodossa kirjaimellinen merkkijono, joka koostuu 6 osasta, jotka edustavat vuoden, kuukauden, päivämäärän (tai päivämäärän, kuukauden, vuoden), tunnin, minuutin ja sekunnin numeerista arvoa.

Vakio on ympäröity lainausmerkeillä ja alkaa merkillä D. Typistetty arvo on sallittu: joko ilman päivämäärää, ilman aikaa tai tyhjä arvo. Arvojen muutosalue: 1.1.1970 - 31.12.2037. Tietokoneen muistissa vakioiden ja päivämäärä-aikamuuttujien arvot vievät 4 tavua. Arvo edustaa sekuntien määrää, joka on kulunut 1. tammikuuta 1970 kello 00:00:sta.

Esimerkki datetime-tyyppimuuttujan käyttämisestä ohjelmassa:

päivämäärä-aika Alfa = D "2004.01.01 00:00"; // Uusivuosi
päivämäärä-aika Tim = D "01/01/2004"; // Uusivuosi
päivämäärä-aika Tims = D "2005.05.12 16:30:45";
päivämääräaika N_3 = D "05/12/2005 16:30:45"; // 12. toukokuuta 2005 16 tuntia 30 minuuttia 45 sekuntia
päivämäärä-aika Käännös = D ""; // vastaa D"[käännöspäivämäärä] 00:00:00"

Muuttujien ilmoittaminen ja alustaminen

Jotta ohjelmalla ei laskutoimituksen aikana tule kysymyksiä siitä, minkä tyyppiseen dataan tämä tai tuo muuttuja kuuluu, MQL4:ssä on pakollinen sääntö ilmoittaa muuttujien tyyppi selkeästi heti ohjelman alussa. Ennen kuin muuttuja voi osallistua laskelmiin, se on ilmoitettava.

Muuttuva ilmoitus- Tämä on ensimmäinen muuttuja maininta ohjelmassa. Kun muuttuja ilmoitetaan, sen tyyppi ilmoitetaan.

Alustetaan muuttuja- tämä antaa sille sen tyyppiä vastaavan arvon, kun se ilmoitetaan. Mikä tahansa muuttuja voidaan alustaa. Jos aloitusarvoa ei ole erikseen määritetty, numeerinen muuttuja alustetaan nollaksi (0) ja merkkijonomuuttuja tyhjäksi merkkijonoksi.

Muuttuja voidaan ilmoittaa erilliselle riville:

int Muuttu_1 ; // Muuttujan ilmoittaminen erilliselle riville

Tämä merkintä tarkoittaa, että muuttujaa Var_1 (itse muuttujan ilmoitusta) käytetään ja tämän muuttujan tyyppi on int.

Yhdelle riville saa ilmoittaa useita samantyyppisiä muuttujia:

int Muuttu_1, Laatikko, Yhteys; // Useiden muuttujien ilmoittaminen yhdelle riville

Tämä merkintä tarkoittaa, että muuttujia Muut_1, Laatikko ja Comm käytetään ja näiden muuttujien tyyppi on int, eli listatut muuttujat otetaan ohjelmassa huomioon kokonaislukutyyppisinä muuttujina.


Muuttujien alustaminen lausekkeissa on sallittua:

kaksinkertainen Muutt_5 = 3,7 ; // Muuttujan alustaminen määrityskäskyssä

Tämä merkintä tarkoittaa, että reaalityyppistä muuttujaa Var_5 käytetään alkuarvolla 3,7.

Missään ohjelman seuraavilla riveillä ei ole ilmoitettu muuttujien tyyppiä. Kuitenkin joka kerta kun ohjelma käyttää muuttujaa, se muistaa, että tämä muuttuja on sitä tyyppiä, joka määritettiin sen ilmoittamisen yhteydessä. Laskelmien edetessä ohjelmassa muuttujien arvot voivat muuttua, mutta muuttujien tyyppi ei muutu.

Muuttujan nimellä ei ole mitään tekemistä muuttujan tyypin kanssa, ts. Sen tyyppiä on mahdotonta arvioida muuttujan nimen perusteella. Samaa muuttujan nimeä eri ohjelmissa voidaan käyttää minkä tahansa tyyppisille muuttujille. Mutta yhden ohjelman sisällä minkä tahansa muuttujan tyyppi voidaan ilmoittaa vain kerran. Ohjelman suorituksen aikana ilmoitetun muuttujan tyyppi ei muutu.

Esimerkkejä muuttujan ilmoittamisesta ja alustuksesta

Muuttujailmoitukset voidaan tehdä useille riveille tai yhdelle riville.

Useita samantyyppisiä muuttujia voidaan ilmoittaa samanaikaisesti. Tässä tapauksessa muuttujat luetellaan pilkuilla erotettuina ja rivin loppuun sijoitetaan puolipiste.



Riisi. 12. Esimerkkejä muuttujien ilmoittamisesta erillisellä rivillä.


Muuttujien tyyppi ilmoitetaan kerran, kun muuttuja mainitaan ensimmäisen kerran. Muuttujan toinen ja myöhemmät maininnat eivät osoita sen tyyppiä.



Riisi. 13. Esimerkkejä muuttujien ilmoittamisesta erillisellä rivillä.


Muuttujien ilmoittaminen ja alustus lausekkeissa on sallittua.



Riisi. 14. Esimerkkejä muuttujan alustuksesta.



Riisi. 15. Muuttujan alustaminen yhdistelmäkäskyn otsikossa.