Skіlki "kunnioittaa" tietotyyppejä. Float-tyyppi (float, double ja long double) Tekstitietotyyppi c

Lukijapaperit

Ennen danimi riippumatta siitä, onko tiedot esitetty, ne esitetään siten, että voit automatisoida valinnan, valinnan ja käsittelyn vaalitarkkailussa (numerot, symbolit, numerot ja numerot).
Ohjelman tiedot voivat olla vapaapäiviä(määritetty ohjelman syötössä) tai tulosten käsittelyä(prom_zhnimi chi vih_dnimi).
Usі danі - zminnі ja vakiot - ovat laulutyypin kanssa.
Näiden sidosten ihotyypille arvoalue(tavumäärä pid one -arvo), joka sallittuja operaatioita.

Tietotyypit C/C++ jaetaan pääі Lähde pois.
Päätyyppeihin asti ovat:

  1. mitätön(Tyhjä tyyppi),
  2. int(tsiliy-tyyppi),
  3. kellua(puhenumerot liukulukulla),
  4. kaksinkertainen(puhenumerot vaihtelevan tarkkuuden liukulukulla),
  5. hiiltyä(Hahmotyyppi),
  6. bool-Logiikka.

Varastotyypit

Muuntyyppisten tietojen muovaukseen, vicorist pää tipi + ns yksityiskohtia. Urakhuvannyamilla luodut tietotyypit vakiotyypit eri spesifikaatioilla, nimeämisellä tallennustyypit. C++:ssa on useita tietotyyppimäärityksiä:
  1. lyhyt - lyhyt;
  2. pitkä - pitkä;
  3. allekirjoitettu-allekirjoitettu;
  4. allekirjoittamaton
Pokhіdnі tipi - tse:
  • massiivinen,
  • toiminnot,
  • tyylikäs,
  • vkazivniki,
  • posilannya,
  • rakenne,
  • yhdistys.

hahmotyyppi

Annettu tyyppi hiiltyä tietokoneen muistissa on aina 1 tavu. Tse z tim, scho nіd symbolisen tyypin arvo syöttääksesi muistiin stіlki, sіlki tarvitset zberіgannya 256 näppäimistön symbolia.
Hahmotyyppi voi olla zі-merkki tai allekirjoittamaton.
Määrille zі-merkki allekirjoitettu char voit valita arvon välillä -128 - 127. Muutostyypin arvosta riippuen allekirjoittamaton merkki voi olla välillä 0 - 255.
tietotyyppi Arvoalue Rozmir
hiiltyä -128...+127 1 tavu
allekirjoittamaton merkki 0...255 1 tavu
allekirjoitettu char -128...127 1 tavu

Kun työskentelet symbolisten tietojen kanssa, muisti seuraa sitä yksittäinen merkki, vin on syyllinen butin säädöksiin yksittäiset jalat. Symbolien sekvenssi, eli rivi, voittaessaan virazeissa, käy ilmi jalassa. Esimerkiksi: "F", "3", "Ivan", "235"

kokonaislukutyyppi

Annettu tyyppi int tietokoneen muisti voi viedä joko 2, 4 tai 8 tavua. Tse piilee prosessorin kapasiteetissa.
Saat umovchannyami usі tsіlі tyypit vvazhayutsya ikoninen, tobto spesifikaattori allekirjoitettu(Sign) ei voi olla vkazuvati.
Tarkentaja allekirjoittamaton(signed) antaa sinun esittää vain positiivisia lukuja.

Kokonaislukutyyppien arvoalueet

tietotyyppi Arvoalue Rozmir (tavu)
int
allekirjoitettu int
allekirjoitettu pitkä int
-2147483648 ... 2147483647 4
allekirjoittamaton int
allekirjoittamaton pitkä välit
0 ... 4294967295 4
lyhyt int
allekirjoitettu lyhyt int
-32768 ... 32767 2
allekirjoittamaton lyhyt väliv 0... 65535 2
pitkä pitkä int \(-(2^{63}-1)...(2^{63}-1)\) 8
allekirjoittamaton pitkä
pitkä int
\(0...(2^{64}-1)\) 8

puhetyyppi

Puhenumeron sisäinen ulkoasu tietokoneen muistissa päivitetään kokonaisluvun ulkoasun mukaan. Esitetty liukulukuluku eksponentiaalisessa muodossa. $$\pm meE\pm p$$ de m- Mantis (koko tai murtoluku kymmenespisteellä), R- Tilausnumero). Jotta eksponentiaalisessa muodossa oleva luku muunnetaan lopulliseksi ilmentymäksi kiinteällä pisteellä, on tarpeen kertoa mantis kymmenellä järjestyksessä.

Puhetyyppien valikoima

tietotyyppi Arvoalue Rozmir (tavu)
kellua 3,4E-38 ... 3,4E+38 4
kaksinkertainen 1.7E-308... 1.7E+308 8
pitkä tupla 3.4E-4932 ... 3.4E+4932 10

Mantin pituus ilmaisee numeron tarkkuuden, ja alueen pituus määrittää alueen.
Float-tyyppiset tiedot ovat 4 tavua, tälle numerolle syötetään 1 kaksinumeroinen merkki, 8 numeroa - tuskalla ja 23 - simasti. Oskіlki vanhempi hahmo mantisi zavzhdi dorivnyu 1, sinut pelastetaan.
Tietotyyppi double vievät 8 tavua, niillä on -11 järjestys ja simassuunnan järjestys -52.
Pitkä tyyppimäärittäjä ennen kaksoistyypin nimiä osoittaa, että arvoon lisätään 10 tavua.

Boolen tyyppi

Vaihda tyyppiä bool voit ottaa vähintään kaksi arvoa totta(tosi) tai väärä(hölynpöly). Tulkitaanko arvo, joka ei ole yhtä suuri kuin nolla, tosi, ja kun se muunnetaan kokonaislukutyypiksi, se on arvo, joka on yhtä suuri kuin 1. Arvo false esitetään muistissa 0:na.

Kirjoita void (tyhjä)

Jonka persoonaton merkitys on tyhjä.
Tyhjyystyyppi voittaa:
  • funktioiden nimeäminen, jotka eivät kierrä arvoja;
  • syöttääksesi tyhjän luettelon funktion argumenteista;
  • vitriinien perustyyppinä;
  • operaatiossa on heittotyyppejä.

Kätyrien nöyryytys

Zminna- tämä on muistikylän nimi, jossa laulutyypin merkitys otetaan.
Käärmeellä on minä kyllä(tunniste) ja merkitys.
Olen kyllä palvelevat tarkoitukseen muistialueen, de zberіgaєtsya merkityksen.
Olen kyllä(tunniste) - yhdistelmän kirjainten, numeroiden ja symbolien yhdistelmä, joka asettaa muutoksen nimen, nimeän ohjelman toiminnon tai avainsanan. Kieli C/C++ on isot ja pienet kirjaimet erotteleva (joten summaa ja summaa käsitellään kahtena eri muutoksena).
de, tyyppi– avainsana, alun perin käytetty muistiin (tavumäärä), visioihin muutoksen arvon tallentamiseen (ohjelman objektina), (int – tsiliy, float, double – puhe, char – symbolinen, bool – looginen) ;
minä kyllä- Muutoksen yksilöllinen tunniste, joka asettaa ohjelmaobjektin symbolisen osoitteen EOM-muistissa;
aloitteentekijä- Pochatkove muutoksen merkitys, kuten se näkyy päivittäin kuvauksessa.
Esimerkiksi: Samantyyppiset muutokset voidaan ryhmitellä jakamalla ",". Muutosten kuvaus eri tyyppiä Jaa "; ".
Äänitystä varten muutokset C / C:n kielessä voidaan jakaa kolmeen luokkaan:
  1. paikallisesti tainnuttaa toiminnon keskellä ja ovat vain heidän käytettävissään;
  2. globaalit - ne on kuvattu kaikille toiminnoille ja saatavilla mistä tahansa ohjelman paikasta;
  3. Funktion muodolliset parametrit on kuvattu funktion parametriluettelossa.
Butt:

Tunnisteet: Muutoksen kanssa. char, int, unsigned, long, long long, float, double, long double, long float, leksikaalinen scoping. Zminnykhin ääni. Näkyvyyden laajuus. Muutosten alustaminen. Muutosten nimet. eksponenttimuoto.

Muutokset

Muutokset ovat voittajia arvon säilyttämiseksi (sic!). Muutokselle on ominaista nimen tyyppi. Aloitetaan nimestä. Muutos voidaan aloittaa vakuutuksesta tai kirjaimista, mutta ei numerosta. Muutos voi sisältää symboleja Englannin aakkoset, numerot ja merkki. Muutos ei ole syyllinen zbіgatisyaan avainsanoilla (nämä ovat erikoissanoja, kuten ne on kirjoitettu kuten avainrakenteita, tietyille tyypeille jne.)

auto kaksinkertainen int struct
tauko muu pitkä vaihtaa
rekisteröidy typedef hiiltyä ulkoinen
palata mitätön tapaus kellua
allekirjoittamaton oletuksena varten allekirjoitettu
liitto tehdä jos koko
haihtuvia jatkaa enum lyhyt
sillä aikaa linjassa
Ja myös joukko muita sanoja, esimerkiksi kääntäjän versiota varten kaukana, lähellä, pikkuruinen, valtava, asm, asm_ että sisään.

Esimerkiksi oikeat tunnisteet
a, _, _1_, Sarkasm, a_long_variable, aLongVariable, var19, defaultX, char_type
väärä
1a, $arvo, a-pitkä-arvo, lyhyt

Si - rekisteröity kieli. Muutokset nimillä a ja A, tai end ja END tai perfectDark ja PerfectDarK - kaikki muutokset.

Muutostyypit

Vaihda tyyppiä

  • 1) Muuta kokoa tavuina
  • 2) Muutoksen lahjat muistissa (kuten kaksisilmäinen ihminen on lyöty muistialueen nähdessään).
Päätyyppien viikset. Jaamme ne kahteen ryhmään - numeroihin ja numeroihin, joissa on liukuluku.

Tsіlі

  • hiiltyä- Laajenna 1 tavu. Odota! Tse vieressä muistaa.
  • lyhyt- Rozmir 2 tavua
  • int- Rozmir 4 tavua
  • pitkä- Rozmir 4 tavua
  • pitkä pitkä- Rozmir 8 tavua.
Tästä seuraa kunnioitusta. Si:n muutoksen laajeneminen ei ole ilmeistä, kuten tavujen laajeneminen. Standardissa on vähemmän kuin mitä

hiiltyä<= short <= int <= long <= long long

Yllä oleva arvo koskee VC2012-kääntäjää 32-bittisessä koneessa. Joten jos ohjelmasi on valehdella maailman muutoksessa, älä kysy muutoksesta.

Lasketaan nyt maksimi- ja vähimmäismäärä, jotta voimme säästää ihotyypin muutoksen. Numerot voivat olla sekä positiivisia että negatiivisia. Negatiiviset luvut saavat yhden bitin etumerkkisäästön. Joskus merkki on tarpeen (esim. ota pankkitili purkista, lämpötila, koordinaatti myös), jos ei ole tarvetta toiselle (vaga, taulukon laajennus, ihmisten ikä on liian laiha). ). Jolle kaikki voittaa, muuntaja, jonka tyyppi on allekirjoitettu ja allekirjoittamaton. etumerkitön merkki - kaikki 8 bittiä numeroina, samalla voit kirjoittaa numeroita välillä 00000000 - 11111111 tuplaa varten, sitten 0 - 255 etumerkillistä merkkiä -128 - 128. Merkintämerkki ja etumerkki vastaavat tätä.

Tab. 1 Rozmir tsilih tyypit si.
Tyyppi Rozmir, tavu Minimiarvo Suurin arvo
allekirjoittamaton merkki 1 0 255
allekirjoitettu char
(hiiltyä)
1 -128 127
allekirjoittamaton lyhyt 2 0 65535
allekirjoitettu lyhyesti
(lyhyt)
2 -32768 32767
allekirjoittamaton int
(allekirjoittamaton)
4 0 4294967296
allekirjoitettu int
(int)
4 -2147483648 2147483647
allekirjoittamaton pitkä 4 0 4294967296
allekirjoitettu pitkään
(pitkä)
4 -2147483648 2147483647
allekirjoittamaton pitkä pitkä 8 0 18446744073709551615
allekirjoitettu pitkä pitkä
(pitkä pitkä)
8 -9223372036854775808 9223372036854775807

koko

Siinä on operaattori, jonka avulla voit ottaa muutoksen tavuina. sizeof on vaihdettavissa, tai sizeof(changeable) tai sizeof(type). Tämä on sama operaattori, joten funktio ei voi ottaa pois tietoa tyypin laajennuksesta ohjelman lopussa. Kirjoitetaan pieni ohjelma vaihtaaksesi maailmojen välillä.

#sisältää #sisältää int main() ( merkki c; lyhyt s; int i; pitkä l; pitkä pitkä L; // Viklik sizeof as "function" printf("sizeof(char) = %d\n", sizeof(c)); printf ("koko(lyhyt) = %d\n", koko(s)); printf("koko(int) = %d\n", koko(i)); printf("koko(pitkä) = %d\ n", koko(l)); printf("koko(pitkä pitkä) = %d\n", koko(L)); c), printf("koko(lyhyt) = %d\n", s:n koko) ; n", koko l); printf("koko(pitkä pitkä) = %d\n", koko L); _getch();

(Mielestäni on selvää, että muutos voi olla kelvollinen nimi). Voit kirjoittaa ohjelman yksinkertaisemmalla tavalla

#sisältää #sisältää int main() ( printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(short) = %d\n", sizeof(short)); printf("sizeof( int) = %d\n", sizeof(int)); printf("koko(pitkä) = %d\n", koko(pitkä)); printf("koko(pitkä pitkä) = %d\n", sizeof(pitkä pitkä));//sizeofia ei ole mahdollista kutsua tyypin nimen operaattorina //sizeof int - käännös pardon _getch();

Samalla tyypillä voi olla äidin nimi
lyhyt === lyhyt int
pitkä === pitkä int
pitkä pitkä === pitkä pitkä int
unsigned int === unsigned

Tipi liukulukulla

  • kellua- 4 tavua,
  • pitkä kellua- 8 tavua
  • kaksinkertainen- 8 tavua
  • pitkä tupla- 8 tavua.
Tässä näkyy myös VC2012:n arvo vakiokelluketyypeille<= long float <= double <= long double все числа с плавающей точкой - со знаком.

Muutoksen järjestäminen uudelleen

Сі ei ole yhdenmukainen muutoksen uudelleenjärjestyksen kanssa. Tse tarkoittaa, että arvoa nostetaan pysyvästi, sanotaan muuttamalla tyyppiä int "skinemo-arvon" avulla.

#sisältää #sisältää void main() ( unsigned a = 4294967295; int b = 2147483647; // Järjestä uudelleen allekirjoittamaton tyyppi printf("%u\n", a); a += 1; printf("%u", a); // Järjestä uudelleen allekirjoitettu tyyppi printf("%d\n", b); b += 1; printf("%d", b); getch(); )

Vzagali, käyttäytyminen muutoksen korvaamisen yhteydessä määritetään vain tyypille allekirjoittamaton: Unsigned value skin Muille tyypeille se voi olla mahdollista, ja koska sinun on kiinnitettävä huomiota uudelleenkirjoittamiseen, työskennellä manuaalisesti, pereviryayuchi-argumentit tai muita tapoja valehdella kääntäjän ja prosessorin arkkitehtuurissa.

Postfix ei ole määritetty tyyppiin

Numeroiden kanssa työskennellessä on mahdollista ilmoittaa selvästi numerotyyppi, esimerkiksi lisäkirjaimille, esim.

  • 11 on lukutyyppiä int
  • 10u - allekirjoittamaton
  • 22l tai 22l - pitkä
  • 3890ll tai 3890LL - pitkä pitkä (myös lL tai Ll)
  • 80.0f tai 80.f tai 80.0F - kelluva
  • 3.0 – tyypin kaksinkertainen määrä
Eksponentiaalinen merkintä antaa oletuksena myös numeron kaksoistyypille. #sisältää #sisältää int main() ( printf("koko(int) = %d\n", koko(10)); printf("sizeof(unigned) = %d\n", sizeof(10u)); printf("sizeof( long) = %d\n", sizeof(10l)); printf("koko(pitkä pitkä) = %d\n", sizeof(10ll)); printf("sizeof(float) = %d\n", sizeof(10.f));printf("sizeof(double) = %d\n", sizeof(10.)); printf("sizeof(double) = %d\n", sizeof(10e2)); ( ;)

Edistyvä koodi ei kuitenkaan johda anteeksiantamiseen, mikä johtaa tyypin implisiittiseen muutokseen.

Inta = 10u; kaksinkertainen g = 3.f;

Kuudestoista ja kahdeksastoista muoto

Numeroiden kanssa työskentelytunnin alla voit laatia kunnianosoituksen kuudestoista ja kahdeksastoista muotoa. Kuudennentoista lukujärjestelmän luvut alkavat 0x:stä, ylimmän järjestelmän nollasta. On selvää, että jos luku alkaa nollasta, se ei ole syyllinen numeroihin, jotka ovat suurempia kuin 7:

#sisältää #sisältää void main() ( int x = 0xFF; int y = 077; printf("hex x = %x\n", x); printf("dec x = %d\n", x); printf("oct x = %o\n", x); printf("oct y = %o\n", y); printf("dec y = %d\n", y); y); getch();

Lukujen eksponentiaalinen esitysmuoto

Annetun luvun eksponentiaalista muotoa kutsutaan annetuksi luvuksi näkymässä M e ± p, de M- Mantis numero, s- Vaihe kymmenen. Kun tsimu mantis voi olla yksi nollasta poikkeava merkki ennen kymmentä koomaa.
Esimerkiksi 1,25 === 1,25e0, 123,5 === 1,235e2, 0,0002341 === 2,341e-4 jne.
Antamalla 3.2435e7 vastaa 3.2435e+7
Іsnuє y іnshe yavlennya ("іinzhenerne"), missä vaiheessa voi olla triytsien monikerta. Esimerkiksi 1,25 === 1,25e0, 123,5 === 123,5e0, 0,0002341 === 234,1e-6, 0,25873256 === 258,73256e-3 jne.

Kätyrien nöyryytys

Kaikki muutokset ovat järkyttyneitä lohkoon

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

Kun muutos ilmaistaan, se on kirjoitettu її tyyppi, että im'ya.

int a; kaksoisparametri;

Voit äänestää samantyyppistä kilohailia jakamalla kooman nimet

Pitkä pitkä arg1, arg2, arg3;

Esimerkiksi

#sisältää #sisältää int main() ( int a = 10; int b; while (a>0)( int z = a*a; b += z; ) )

Muutokset esitetään täällä aі b toiminnon keskellä pää, tuo muutos z syklin rungon keskellä. Seuraava koodi, joka aiheuttaa anteeksipyynnön

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

Tästä syystä muutoksen ilmoittaminen maksaa toimeksiantooperaattorin jälkeen. Korovia muutosten sattuessa voit alustaa ne välittömästi.
int i = 0;
Jos alustus tehdään, kun muutos ilmaistaan, operaattori ei kunnioita sitä, niin seuraava koodi on pracyuvatime

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

Pochatkove muutoksen merkitys

On myös tärkeää muistaa, että järjestelmän muutoksia ei aloiteta nolilla, kuten monissa muissa kieliohjelmissa. Muutoksen panettelun jälkeen heiltä otetaan pois "lyönti" - vipadkove-merkitys, joka katosi muistipiiristä, kun bula nähtiin muutoksen alla. Tämä johtuu meistä robottiohjelmien optimoinnin edessä: jos alustusta ei tarvita, niin ei ole mitään käytettävää resursseja nollien kirjoittamiseen (kunnioitus: globaalit muutokset alustetaan nolilla, miksi niin lue tästä statt i:stä) .

#sisältää #sisältää int main() ( int i; printf("%d", i); getch(); )

Kuinka katsoa ohjelmaa VC:llä
Run-Time Check Failure #3 - Muuttuja "i" on käytössä ilman alustusta.
Jos painat "Prodovzhiti", ohjelma näyttää "smіttya". Muille kääntäjille ohjelma ei ole edellä aikaa.

Näkyvyyden laajuus

Muuttujat ovat paikallisia (äänitetty keskellä funktiona) ja globaaleja. Globaali muutos näkyy kaikille tässä tiedostossa ilmaistuille funktioille. Paikallista muutosta ympäröi sen näkyvyysalue. Jos näytän, että se on muutettu "muistomerkki jossain paikassa", se tarkoittaa, että missä paikassa se nimitettiin ja її voit voittaa. Katsotaanpa esimerkiksi ohjelmaa, jolloin globaali muutos

#sisältää #sisältää int globaali = 100; void foo() ( printf("foo: %d\n", globaali); ) void bar(int global) ( printf("bar: %d\n", globaali); ) int main() ( foo() bar(333); getch();

Nähdään
foo: 100
baari: 333
Tässä on globaali muutos maailmanlaajuisesti näkyy kaikille toiminnoille. Jos funktion argumentti korvaa globaalin muutoksen, kun argumentti 333 hyväksytään, paikallinen arvo 333 näytetään.
Axis inshey butt

#sisältää #sisältää int globaali = 100; int main() ( int globaali = 555; printf("%d\n", globaali); getch(); )

Vivede-ohjelma 555. Joten, kuten viime vuosikymmenellä, paikallisesti muuttunut "tärkeäksi". Muuttunut, tyrmistynyt näkyvyyden laulualueella, se ei näy hänen takaansa, esim.

#sisältää #sisältää int globaali = 100; int main() ( int x = 10; ( int y = 30; printf("%d", x); ) printf("%d", y); )

Kenen persettä ei ole koottu, enemmän muutosta yіsnuє vähemmän kuin lohkosi keskellä.
Jos vaihdat peräaukeen akselia, goloshenі lohkon keskellä, peitä yksi

#sisältää #sisältää int globaali = 100; int main() ( int x = 10; ( int x = 20; ( int x = 30; printf("%d\n", x); ) printf("%d\n", x); ) printf( "%d\n", x); getch();

Vivede ohjelma
30
20
10
Globaalin muutoksen jäljet ​​ovat ainutlaatuisia. Usein voi tuntea samoin. Yritetään selvittää miksi. Yksinkertaisissa projekteissa globaalit muutokset näyttävät täysin normaaleilta. Ale osoittaa, että sinulla on lisäys, joka

  • 1) Sen on kehittänyt suuri joukko ihmisiä ja se koostuu sadoista tuhansista koodiriveistä
  • 2) Pratsiuє klo kіlka tokіvі

Ensinnäkin sitä muutetaan globaalisti, koska se on kaikkien nähtävillä, se voidaan muuttaa jollain ohjelman osalla. Muutit globaalin muutoksen, haluat kirjoittaa sen muistiin, ja toinen osa ohjelmaa on jo ylikirjoittanut muut arvot siinä (itse asiassa on olemassa koko joukko ongelmia, joita syytetään rikkaasta suoratoistomediasta) . Toisella tavalla suurilla mitoilla projekti ei seuraa, kuka tahansa loi globaalit muutokset. Lisää peppuja näkemällä on selvää, että muutokset voivat vääntää toisiaan, ne itse näkyvät hienossa projektissa.

Mielettömästi nämä tilanteet, jos ohjelmaan tehdään globaaleja muutoksia, mutta sellaisia ​​ei ole usein eikä kotitehtävissäsi, niin ÄLÄ LUO GLOBAALIA MUUTOKSET!
Muutokset eivät voi olla vain suuria ja niillä voi olla liukuluku. Іsnuє persoonaton muut tyypit, yakі mi vvchatimemo nadali.

cel-tyyppi (int)

Rosmariinityyppi int ei erotu standardina, vaan se on tietokoneen ja kääntäjän muodossa.

Jos kyseessä on 16-bittinen prosessori, syötä jokaiselle tyypille 2 tavua,

32-bittisille - 4 tavua.

Tarkentaja lyhyt ennen im'yam-tyyppiä kerro kääntäjälle, että luvun tulee olla 2 tavua prosessorin kapasiteetista riippumatta.

Tarkentaja pitkä tarkoittaa, että arvo on 4 tavua.

Siten 16-bittisessä tietokoneessa int ja short int,

ja 32-bittisessä - int ja long int.

Sisäinen ulkonäkö koko tyypin arvot - kaksoiskoodin kokonaisluku. Määrittelijää valittaessa allekirjoitettu luvun merkittävin bitti tulkitaan etumerkiksi (0 - positiivinen luku, 1 - negatiivinen). Tarkentaja allekirjoittamaton voit esittää vain positiivisia lukuja, korkeimman luokan sirpaleet hyväksytään osaksi numeron koodia. Että. tyypin int alueen arvo kuuluu määritteiden tyyppiin. IBM PC-sum -tietokoneiden kokonaislukutyypin arvojen alue erilaisilla määritteillä on ilmoitettu taulukossa "Yksinkertaisten tietotyyppien arvoalue".

Muuten, kaikki kokonaislukutyypit katsotaan allekirjoitetuiksi, joten etumerkillinen määrittäjä voidaan jättää pois.

Vakiot, kuten ohjelmankin, määrätään samaan tyyppiin niiden tyypistä riippuen. Jostain syystä ohjelmoija ei hallitse, voit erikseen määrittää vaaditun tyypin lisäliitteille L, l (pitkä) ja U, u (allekirjoittamaton). Esimerkiksi vakio 32L on tyyppiä pitkä ja kestää 4 tavua. Voit muuttaa jälkiliitteitä L ja U samanaikaisesti, esimerkiksi 0x22UL tai 05Lu.

Huomautus. Tyyppi short int, long int, signed int ja unsigned int voidaan lyhentää lyhyeksi, pitkäksi, signetuksi ja allekirjoittamattomaksi, tietenkin.

Merkkityyppi (merkki)

Merkkityypin arvoksi syötä tavujen määrä, joka riittää mahduttamaan minkä tahansa merkistön tietylle tietokoneelle, mikä oli hämmentävää tyypin nimen suhteen. Yleensä yksi tavu. Tyyppi char, kuten ja іnshі tsіlі tyypit, voivat olla sekä merkki että merkki. Etumerkittömille arvoille voit ottaa arvon välillä -128 - 127. Jos etumerkitön määrite on erilainen, voit ottaa arvot välillä 0 - 255. Mikä riittää ottamaan minkä tahansa merkin arvosta 256- ASCII-merkkisarja. Char-tyypin arvot voidaan tallentaa myös kokonaislukuina.



Laajennuksen merkkityyppi (wchar_t)

Tyyppi wchar_t tehtävät roboteille, joissa on joukko symboleja, joiden koodaukseen 1 tavu ei riitä. Esimerkiksi Unicode. Rozmіr tsgogo pudota vіd realіzatsії; pääsääntöisesti viinityyppi shortsit. Wchar_t-tyypin rivivakiot kirjoitetaan L-etuliitteellä, esimerkiksi L Gates.

Boolen tyyppi (bool)

Boolen arvot voivat ottaa useamman kuin yhden arvon tottaі vääräє varatut sanat. Väärän arvon sisäinen muoto on 0 (nolla). Tulkitaanko arvo todeksi vai ei. Muunnettaessa koko tyyppiä totta suurin arvo on 1.

Float-tyyppi (kelluke, tupla ja pitkä tupla)

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

Tietotyypit, joissa on liukuluku, tallennetaan muistista, muuten pienemmät kokonaisluvut. Puhenumeron sisäinen ilmentymä koostuu kahdesta osasta - mantisiі Tilaus.

IBM PC-mad -tietokoneissa kokotyyppi kellua vievät 4 tavua, josta tulee yksi kaksoispurkaus pіd mantis merkki, 8 luokkaa harmittaa ta 23 mantis alla. Mantissa - kokonaisluku, suurempi kuin 1,0 ja pienempi kuin 2,0. Oskіlki vanhempi hahmo mantisi zavzhdi dorivnyu 1, sinut pelastetaan.

Tyyppiarvoille kaksinkertainen, jos se vie 8 tavua, järjestys ja mantis tulee syöttää 11 ja 52 riviin asianmukaisesti. Mantin pituus ilmaisee numeron tarkkuuden ja tilauksen pituus sen kantaman. Kuinka on mahdollista työskennellä viimeisen tietueen taulukoiden kanssa, joilla on sama tavumäärä, joka syötetään tyypin float ja long int arvon mukaan, niiden sallittujen arvojen alue vaihtelee suuresti sisäisen hakulomakkeen kautta.

Tarkentaja pitkä ennen kuin olen tyyppiä kaksinkertainen osoittaa, että 10 tavua on syötettävä.

Liukulukuvakiot voivat olla geneerisiä double-tyyppisiä. Voit määrittää vakion tyypin apuliitteiden F, f (float) ja L, l (pitkä) takana.

Esimerkiksi vakio 2E+6L on tyyppiä long double ja vakio 1.82f on tyyppiä float.

Kirjoitettaessa ohjelmia, jotka ovat universaaleja eri alustoille, ei ole mahdollista sallia tyypin laajentamista int. Otrimannylle on tarpeen muuntaa operaation koko, jonka tulos on tyypin koko tavuina.

Esimerkiksi MS-DOS-käyttöjärjestelmässä sizeof(int) johtaisi 2:een ja Windows 98:ssa tai OS/2:ssa 4.

ANSI-standardissa päätyyppien alueita ei ole asetettu, vain kokojen väliset erot ilmoitetaan, esim.

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

Huomautus. Vähimmäis- ja enimmäisarvot tietyille tyypeille (), puhetyyppien ominaisuudet - tiedostoissa (), sekä malliluokka numeric_limits

tyhjä tyyppi

Crym resurrected, tyyppi void lisätään elokuvan päätyyppeihin, mutta tyhjän merkitys on persoonaton. Vіn vykorivovuєtsya varten vyznachennya funktsiy, yak ei muunna arvoja, lisätäksesi tyhjän argumenttiluettelon toimintoon perustyypiksi mielenosoittajille ja toiminnan valettu tyyppi.

Erilaisia ​​puhetyyppejä, jotka määräytyvät tietojen esittämisen laajuuden ja tarkkuuden mukaan, otetaan käyttöön, jotta ohjelmoija voisi tehokkaimmin valita tietyn laitteen kyvyn, niiden obsyag-muistin määrän. Se on kuitenkin optimoitu minkä tahansa tyyppisten ohjelmien tietokoneille, jotka eivät välttämättä ole siirrettävissä muille alustoille, koska talletukset ovat ainutlaatuisia tietotyyppien erityisominaisuuksissa.

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

Ohjelman rakenne

C++-ohjelmani koostuu toimintoja, kuvausі esikäsittelyohjeita. Yksi tehtävistä johtuu nimen äidistä pää. Ohjelma alkaa tämän toiminnon ensimmäisellä operaattorilla. Yksinkertaisin funktio voi olla seuraavassa muodossa:

Pääsääntöisesti funktio valitaan jonkin arvon laskemiseen, joten ennen funktion nimeä ilmoitetaan sen tyyppi. Alla on tärkeimmät tiedot toiminnoista:

  • Jos funktion tarkoituksena on kiertää arvoa, tyhjä tyyppi määritetään:
  • funktion runko on lohko i, myöhemmin se on lähellä kiharakaarta;
  • toimintoja ei voida tuntea niiden syötteiden perusteella;
  • ihooperaattori päättyy koomaan (taittuneen operaattorin kerma).

Esimerkki ohjelmarakenteesta, joka korvaa pää-, fl- ja f2-funktiot:

Ohjelma voidaan taittaa kilosta moduulit(Ulkoiset tiedostot).

C++:n johdannon/vision kunnioittaminen

Movі C++:lla ei ole syöttö-/tulostusominaisuuksia - sitä käytetään lisätoimintoihin, tyyppeihin ja objekteihin, jotka löytyvät vakiokirjastoista.

On kaksi tapaa voittaa: funktiot, elokuvan poisto, C++-objektit.

Esittelyn / näytön päätoiminnot tyylillä C:

int scanf (const char * muoto, ...) // Johdanto
int printf(const char* muoto, ...) // visnovok

Haju on muotoiltu ja suuren määrän arvojen käyttöönotto on samanlainen kuin muotomuodon järjestys. Useita muotoja voidaan korvata merkeillä, jotka kopioidaan nykyiseen (näytöllä) näyttöön, tai niitä pyydetään virrasta (näppäimistöltä) syöttäessäsi tuon muunnosmäärityksen, joka alkaa %:lla. merkki, joka syötettynä korvataan tietyillä arvoilla.

Ohjelman takapuoli viktoriaanisena johdannon / tulosteen funktiona tyylillä C:

#sisältää
int main() (
int i;
printf("Anna kokonaisluku\n");
scanf("%d", &i);
printf("Kirjoitit numeron %d, mikä!", i);
paluu 0;
}

Ohjelman ensimmäinen rivi on esiprosessorin käsky, jonka jälkeen ohjelman tekstiin lisätään otsikkotiedosto ohjelman toimintojen muunnelmien kuvauksen poistamiseksi syöttöä/tulostusta varten (tällaisille kutov-kaareille kuten elokuvaelementti). Kaikki esiprosessorin käskyt alkavat #-merkillä.

Kolmas rivi on kuvaus muuttuvasta koko nimityypistä i.

Neljännen rivin printf-funktio näyttää pyynnön "Syötä kokonaisluku" ja siirtyy uudelle riville keruvane \n -sekvenssin mukaan. Scanf-toiminto syöttää näppäimistöltä syötetyn numeron muutokseen i (&-merkki tarkoittaa osoitteen poistotoimintoa), ja seuraava operaattori näyttää rivin näytöllä, joka korvaa muunnosmäärityksen numeron arvolla.

Ohjelma, jossa on C++-luokkien kirjastokirjasto:

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

Otsikkotiedosto sisältää kuvauksen luokkien joukosta syötteen/tulosteen välittämistä varten. Uudelle on määritetty vakioobjektivirrat. cin näppäimistön syöttöä varten cout näytölle näyttämistä varten sekä pottiin sijoitettuja toimintoja varten< < и чтения из потока >>.

Syötteen organisointitapoja on mahdollista muokata, mutta niitä ei suositella muuttamaan yhdessä ohjelmassa.

Ehdotus:
  1. Tietojen kokonaislukutyypit:

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

  1. Tipi-data kelluvalla koomalla (määritä puhetyypit):

float, double, long double.

  1. Hahmon tietotyyppi:

char (signed char), unsigned char, wchar_t.

  1. Looginen tietotyyppi:

bool.

  1. Tietotyypin nollaus (Visual C++:n käyttöönoton):

enum.

2. Mitkä ovat tämäntyyppisten tietojen valinnan ominaisuudet?

C++:ssa on tärkeimmät kokonaislukutietotyypit: short int, unsigned short int, int, unsigned int, long (long int), unsigned long (signed long int).

Qi-tyyppiset tiedot edustavat lukujen kertoimen arvoa. Esimerkiksi:

2 -100 398

Tietotyypit, jotka perustuvat etumerkittömiin etuliitteisiin, voidaan korvata vain positiivisilla luvuilla.

Tiedot, joiden tyyppi on short int, unsigned short int, vie muistista puolet vähemmän tilaa kuin tiedot, joiden tyyppi on int, unsigned int.

Kun kirjoitetaan pitkä, etumerkitön pitkä vie kaksi kertaa enemmän muistitilaa, vähemmän kuin kirjoitetaan int, unsigned int.

3. Miten ohjelma voi kuvata muutosta kokonaislukutyypin nimeen?

Ehdotus:
intx; // merkkijono

Tämän seurauksena muutin x näet muistissa paikan, jonka koko on 4 tavua. Rozmіr mem'yati, scho vіdіlyаєєєєєєєєєєєє pod zmіnnu, zalezhі vіd vіd tietokoneen ominaisuudet, käyttöjärjestelmän tyyppi ja nastuvan-kääntäjä.

4. Kuinka kirjoittaa luku 239 muistiin kokonaislukutyypin muutoksessa?

Jolle on valittu osoitusoperaattori, jota merkitään symbolilla =.

Ehdotus 1. Numeron syöttäminen muuttuu kuvauksen jälkeen.

intx; x = 239;

Ehdotus 2. Syötä muutoksen päivämäärä pіd tunti її kuvaus (pochatkova іnіtsіalіzаtsіya).

int x = 239;

5. Mitä ominaisuuksia kelluvasta klodista peräisin olevilla datatyypeillä on?

Tietotyypit kelluvalla pallolla antavat sinun esittää reaalilukujen kertoimen arvon. Esimerkiksi:

8.35 -990.399 239.0.

C++:ssa on samat perusliukulukutietotyypit: float, double, long double.

Vaihdettu tuplatyyppiin lainaa 2 kertaa enemmän tilaa tietokoneen muistiin, pienempi muutos float-tyyppiin.

Myös pitkän kaksoistyypin vaihtaminen lainaa kaksi tilaa lisää tietokoneen muistista, pienempi kaksoistyypin vaihtaminen.

6. Miten kuvailla muutosta, miten saada kelluvan palan merkitys?

Esimerkki kuvauksesta vaihtuvista tyypeistä float, double, long double:

kellua f; kaksinkertainen d; pitkä kaksinkertainen ld;

7. Kuinka voin kirjoittaa numeerisia arvoja kelluvalla palalla?

Esimerkki numeeristen tietojen syöttämisestä tyypin vaihtamiseksi kelluvalla klodilla:

float f = -9928,45; // Pochatkova alustus kaksinkertainen d; pitkä kaksinkertainen ld; d = 0,445332; // tehtäväoperaattori ld = 3892923898239.030903; // tehtäväoperaattori

8. Kuinka muuntaa muutos float-tyypistä int-tyypiksi?

Kenelle kirjoitustoiminto suoritetaan. Temppeleissä on ilmoitettava sen tyypin nimi, jolle nimi annetaan.

kellua a; intb; a = 8457; b = (int) a; // b = 8

Aina kun toimintoja suoritetaan, tyypit on suojattava, koska ne ovat tipin päällä, koska ne vievät vähemmän tilaa tietokoneen muistista.

Esimerkiksi tyypin short int muuttaminen voi edustaa pienempää numeroaluetta, pienempi muuttuva tyyppi float, double. Etenevän listauksen on järjestettävä muutostyypin short int arvo uudelleen:

lyhyt int i; kellua f; f = 3990099,8; i = (int)f; // i = -7597 - reflow

9. Kuinka muuntaa muutos tyypistä int tyypiksi double?

Esimerkki suorasta int:stä ​​tuplaan:

int i; kaksinkertainen d; i = 982; d = (kaksois) i; // d = 982,0

10. Mitä ominaisuuksia tietotyypin char (merkkidata) käyttämisessä ohjelmassa on?

Merkkityypille annetaan näppäimistöltä syötetyn koodin merkkiarvot. Symbolin є koodi on kokonaisluku.

Esimerkiksi merkin f koodi on 102 .

Osa koodista, jossa symbolin koodi lasketaan:

intcode; merkki symboli; symboli = "f"; koodi = (int)symboli; // koodi = 102

Annettu kirjoittaa char samoilla kokonaisluvuilla. Tietotyyppi char ottaa 1 tavun tietokoneen muistista.

Spivvіdshennja symbolikoodi sijaitsee Windowsin symbolitaulukoissa. Symbolit, joiden koodit ovat 0-127 - nämä ovat BIOS-symboleja, jotka on varattu. Niihin kuuluvat yleisimmät symbolit, numerosymbolit, latinalaisten aakkosten symbolit. Qi-symboleita ei voi muuttaa.

Symbolit, joiden koodit ovat 128–255, ovat alueellisia symboleja, jotka on sidottu tiettyyn sen tietokoneen tablettiin, johon Windows-käyttöjärjestelmä on asennettu.

11. Mitkä ovat tietotyypin bool (boolen tyyppi) ominaisuudet?

Bool-tyypin muutoksilla voi olla vain kaksi arvoa:

totta

false on hölynpölyä.

Muutosten määrät ovat voitollisia loogisten säkeiden uudelleentarkistuksessa. Numeerinen arvo tosi on 1. Numeerinen arvo false on 0.

Koodinpätkä, joka arvioi arvoksi tosi ja epätosi:

int tulos; bool b; tulos = (int) tosi; // tulos = 1 b = epätosi; tulos = (int)b; //tulos = 0

Koodinpätkä, joka muuntaa int:n ja floatin booliksi:

int i; kellua f; bool b; i = 6; b = (bool) i; // b = Totta f = 0,0; b = (bool) f; //b = False

12. Miten määritellään muistilaajennus, joka lainaa tyypinvaihdoksen?

Jolle win operaatio sizeof().

Koodin fragmentti, joka määrittää tietyntyyppisten tietojen laajentamisen:

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

13. Miten eri tyyppien muutoksen alustus sujuu?

int d = 28; float z = (kelluke) 2,85; merkki c = "k"; String ^s = "Hei!" ; kaksinkertainen r = -8,559;

14. Miten määritetään muuttujan tyypin suurin sallittu (pienin sallittu) arvo?

NET Framework -kirjaston muuttujatyypin suurimman sallitun tai pienimmän sallitun arvon määrittämiseen käytetään MaxValue- ja MinValue-arvoja.

Käytä eri tyyppien raja-arvojen merkintää.

Muutetulle tyypille int:

// kirjoita int int i; pitkä MaxInt; pitkä MinInt; MaxInt = (pitkä) i.MaxArvo; // MaxInt = 2147483647 MinInt = (pitkä) i.MinArvo; // MinInt = -2147483648

Muutostyypeille short int :

// kirjoita lyhyt int lyhyt int si; int MaxInt; int MinInt; MaxInt = (int) si.MaxValue; // MaxInt = 32767 MinInt = (int) si.MinValue; // MinInt = -32768

Muutostyypeille unsigned int :

// kirjoita unsigned int allekirjoittamaton intui; allekirjoittamaton int MaxInt; allekirjoittamaton int MinInt; MaxInt = ui.MaxValue; // MaxInt = 4294967295 MinInt = ui.MinValue; // MinInt = 0

Uimurityyppien vaihtaminen:

// kelluva tyyppi kellua f; kellua MaxF; kellua MinF; Max F = f. MaxValue; // MaxF = 3,402823E+38 MinF = f.MinArvo; // MinF = -3,402823E+38

Muutetulle tuplatyypille:

// kaksoistyyppi kaksinkertainen d; kaksinkertainen MaxD; double MinD; Max = d. MaxValue; // Max = 1,79769313486232E+308 Min = d. MinValue; // Minimi = -1,79769313486232E+308

Merkkityyppien vaihtaminen:

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

15. Mitkä ovat enum-tyypin ominaisuudet?

Enum-tyyppi ei ole tietotyyppi. Uudelle on määritetty muistoarvot kokonaisluvun kertoimelle. Ihon muistomerkitys voi olla laulettava zmist ja є kokonaisluku.

Esimerkki enum-tyypin muunnelmasta vuoden kuukausien tunnistamiseen:

enum-kuukaudet (tammi, helmikuu, maaliskuu, huhtikuu, toukokuu, kesäkuu, heinäkuu, elokuu, syyskuu, lokakuu, marraskuu, joulukuu) mn; mn = tammikuu; // mn = 0 mn = maaliskuu; // mn = 2 mn = syyskuu; // mn = 8

Terävälle peräpuolelle muutos on kuvattu enum months -tyypin nimille mn. Kuukausien muistoarvot (tammikuu, helmikuu, …) alkavat 0:sta (0, 1, 2, …). Tammikuun muistoarvo vastaa arvoa 0, helmikuun muistoarvo vastaa arvoa 1 ja niin edelleen.

Ohjelman tekstin enum-tyypin avuksi voit myös muuttaa tuloskoodin lyhyen terminologian muistomerkintöjä.

Voit kirjoittaa sen näin:

mn = (kuukausien lukumäärä)2; // mn = maaliskuu mn = (kuukausien lukumäärä)11; // mn = joulukuu

16. Mitkä ovat tyypin ominaisuudetmitätön ohjelmia vartenC++ ?

Tietotyyppi void voittaa seuraavissa tyypeissä:

  • koska on tarpeen kuvata toimintoa, koska se ei käännä haluttua arvoa (div. butt);
  • koska on tarpeen kuvata toimintoa, koska se ottaa parametrit (div. butt).

peppu. MyFun()-funktio ilman parametreja, jolloin se kääntää minkä tahansa arvon (kääntää tyypin void ) ja ottaa parametreja.

julkinen: void MyFun(void) { // Toimintokappale // ... palata; // Kierrä funktiosta, joten älä kierrä arvoja } // viikoittainen toiminto ohjelmasta ... Minun hauskani(); ...

17. Chin voi kuurottaa muutostyyppimitätön ohjelmassa?

Se ei ole mahdollista, koska void-tyyppi ei sido arvoja.

Goloshennya zminnoy tyyppi mitätön tuottaa ennen anteeksiantoa kokoelma vysnovkom podomlennya:

"Void-tyypin laiton käyttö"

18. Mitkä ovat tyypin ominaisuudetwchar_ t VVisuaalinen C++ ?

Merkkityypin muutokset (katso eteenpäin) muutetaan 8-bittisten ASCII-merkkien tallentamiseksi.

Tyyppi wchar_t on valittu tallentamaan merkkejä, kun ne kasvavat suuriin merkistöihin. Esimerkiksi kiinalaisessa aakkosessa on suuri määrä symboleja. 8 riviä ei riitä paljastamaan kiinalaisten aakkosten koko merkkisarjaa. Siksi, koska on välttämätöntä voittaa ohjelma kansainvälisillä markkinoilla, korvaa char-tyyppi wchar_t:lla.

peppu wchar_t-alatyyppi.

... wchar_tt; // muutokselle t 2 tavua muistia näkyy t = "s"; ...

Yksimerkkinen tyyppi vie 1 tavun (8 bittiä) muistia ja mahdollistaa sen käytön binäärilukujärjestelmässä 2^8 arvo = 256. Char-tyyppiä voidaan käyttää sekä positiivisille että negatiivisille arvoille. Arvon muutosalue on -128 - 127.

uchar

Toinen uchar-tyyppi vie myös 1 tavun muistiin, kuten char-tyyppi, mutta toisaalta ucharilla ei ole enää positiivisia arvoja. Pienin arvo on nolla, suurin arvo on 255. Ensimmäinen kirjain u uchar-tyypin nimessä on lyhenne sanasta unsigned (unsigned).

lyhyt

Tsiliy-tyyppinen lyhyt ma' -rosir 2 syötti (16 bittiä) I, vidpovly, sallittu viralich-tieto arvo on välillä -32768 ja 32767.

opastaa

Merkitön lyhyt tyyppi on ushort-tyyppi, jonka koko on myös 2 tavua. Pienin arvo on 0, suurin arvo on 65535.

int

Kokonaislukutyyppi int voi olla 4 tavua (32 bittiä). Pienin arvo on -2147483648, suurin arvo on 2147483647.

uint

Etumerkitön kokonaislukutyyppinen uint vie muistista 4 tavua ja mahdollistaa kokonaislukuarvojen muuttamisen 0:sta 4294967295:een.

pitkä

Solutyypin pituus voi olla 8 tavua (64 bittiä). Pienin arvo on 9223372036854775808, suurin arvo on 9223372036854775807.

ulong

Ulong-solutyyppi vie myös 8 tavua ja mahdollistaa arvon tallentamisen välillä 0 - 18446744073709551615.

Käytä:

char ch = 12;
lyhyt sh = - 5000;
int in = 2445777;

Etumerkittömien lukujen sirpaleita ei tunnisteta negatiivisten arvojen ottamiseksi. Negatiivisen arvon asettaminen voi johtaa epäjohdonmukaisuuksiin. Tällaisen viattoman käsikirjoituksen akseli pelkistettiin pysähtymättömäksi sykliksi:

Se tulee olemaan oikein näin:

Tulos:

Ch = -128 u_ch = 128
ch = -127 u_ch = 129
ch = -126 u_ch = 130
ch = -125 u_ch = 131
ch = -124 u_ch = 132
ch = -123 u_ch = 133
ch = -122 u_ch = 134
ch = -121 u_ch = 135
ch = -120 u_ch = 136
ch = -119 u_ch = 137
ch = -118 u_ch = 138
ch = -117 u_ch = 139
ch = -116 u_ch = 140
ch = -115 u_ch = 141
ch = -114 u_ch = 142
ch = -113 u_ch = 143
ch = -112 u_ch = 144
ch = -111 u_ch = 145
...