Varijable. Koliko tipovi podataka teže? Kratka varijabla

Kada pišete program na bilo kojem jeziku, trebate koristiti različite varijable za pohranu različitih informacija. Varijable nisu ništa drugo nego rezervirana memorijska mjesta za pohranu vrijednosti. To znači da kada kreirate varijablu, štedite nešto prostora u memoriji.

Možete pohraniti informacije različitih tipova podataka kao što su znakovi, široki znakovi, cijeli brojevi, pomični zarez, dvostruki pomični zarez, booleov itd. Na temelju tipa podataka varijable operativni sustav dodjeljuje memoriju i odlučuje što se može pohraniti u rezervirana memorija .

Primitivni ugrađeni tipovi

C++ nudi programeru bogat skup ugrađenih kao i korisnički definiranih tipova podataka. Sljedeće tablice navode sedam glavnih C++ tipova podataka:

Tip Ključna riječ
Booleov bool
Lik char
Cijeli broj int
Plutajući zarez plutati
Dvostruki pomični zarez dvostruko
Bezvrijedno poništiti
Širok karakter wchar_t

Neki od osnovnih tipova mogu se modificirati pomoću jednog ili više modifikatora ovog tipa:

  • potpisan
  • nepotpisan
  • kratak

Sljedeća tablica prikazuje vrstu varijable, količinu memorije potrebnu za pohranu vrijednosti u memoriju i koja je najveća i minimalna vrijednost koja se može pohraniti u takve varijable.

Tip Tipična bitna širina Tipični raspon
char 1 bajt -127 do 127 ili 0 do 255
unsigned char 1 bajt 0 do 255
signed char 1 bajt -127 do 127
int 4 bajta -2147483648 do 2147483647
nepotpisani int 4 bajta 0 do 4294967295
potpisan međ 4 bajta -2147483648 do 2147483647
kratki int 2 bajta -32768 do 32767
nepotpisani kratki međ Raspon 0 do 65,535
potpisan kratki međ Raspon -32768 do 32767
dugo int 4 bajta -2.147.483.648 do 2.147.483.647
potpisan dug int 4 bajta isto kao dugi int
unsigned long int 4 bajta 0 do 4,294,967,295
plutati 4 bajta +/- 3.4e +/- 38 (~7 znamenki)
dvostruko 8 bajtova
duga dvostruka 8 bajtova +/- 1.7e +/- 308 (~15 znamenki)
wchar_t 2 ili 4 bajta 1 široki znak

Veličina varijabli može se razlikovati od veličine prikazane u gornjoj tablici, ovisno o kompajleru i računalu koje koristite. Dolje je primjer koji će dati točnu veličinu različitih vrsta podataka na vašem računalu.

#uključi korištenje imenskog prostora std; int main() ( cout<< "Size of char: " << sizeof(char) << endl; cout << "Size of int: " << sizeof(int) << endl; cout << "Size of short int: " << sizeof(short int) << endl; cout << "Size of long int: " << sizeof(long int) << endl; cout << "Size of float: " << sizeof(float) << endl; cout << "Size of double: " << sizeof(double) << endl; cout << "Size of wchar_t: " << sizeof(wchar_t) << endl; return 0; }

Ovaj primjer koristi endl koji uvodi znak novog retka nakon svakog retka i operatora<< используется для передачи нескольких значений на экран. Мы также используем оператор veličina() da biste dobili veličinu različitih tipova podataka.

Kada se gornji kod kompajlira i izvrši, daje sljedeći izlaz, koji se može razlikovati od stroja do stroja:

Veličina char: 1 Veličina int: 4 Veličina short int: 2 Veličina long int: 4 Veličina float: 4 Veličina double: 8 Veličina wchar_t: 4

Typedef deklaracije

Možete stvoriti novi naziv za postojeći tip koristeći typedef. Ispod je jednostavna sintaksa za definiranje novog tipa pomoću typedef:

Typedef tip newname;

Na primjer, sljedeće govori prevoditelju da su noge drugo ime za int:

Typedef int stopala;

Sada je sljedeća deklaracija savršeno legalna i stvara cjelobrojnu varijablu koja se zove udaljenost:

Udaljenost stopala

Navedene vrste

Nabrojani tip deklarira izborni naziv tipa i skup od nula ili više identifikatora koji se mogu koristiti kao vrijednosti tipa. Svaki enumerator je konstanta čiji je tip enumeracija. Stvaranje enumeracije zahtijeva korištenje ključne riječi nabrajanje. Opći prikaz vrste nabrajanja:

Enum enum-name ( popis imena ) var-list;

Ovdje je enum-name naziv enum tipa. Popis imena odvaja se zarezom. Na primjer, sljedeći kod definira nabrajanje boja koje se nazivaju boje i varijablu c tipa color. Konačno, c je dodijeljena vrijednost "plavo".

Enum boja (crvena, zelena, plava) c; c = plavo;

Prema zadanim postavkama, prvo ime ima vrijednost 0, drugo ime ima vrijednost 1, a treće ima vrijednost 2, itd. Ali nazivu možete dati određenu vrijednost dodavanjem inicijalizatora. Na primjer, u sljedećem nabrajanju zelena bi imala vrijednost 5.

Enum boja (crvena, zelena = 5, plava);

Ovdje će plava imati vrijednost 6 jer će svako ime biti veće od prethodnog.

U ovoj lekciji ćemo pogledati tipove cjelobrojnih podataka, njihove raspone vrijednosti, dijeljenje i preljev: što su oni i primjere.

Cjelobrojni tipovi podataka

Cjelobrojni tip podataka je tip čije varijable mogu sadržavati samo cijele brojeve (bez razlomka, na primjer: -2, -1, 0, 1, 2). U C++ postoji pet osnovnih tipova cijelih brojeva dostupnih za korištenje:

Bilješka: Tip char je poseban slučaj, on je i cjelobrojni i znakovni tip podataka. O tome ćemo detaljnije govoriti u jednoj od sljedećih lekcija.

Glavna razlika između gornjih tipova cijelih brojeva je u tome što što je veći, varijabla tog tipa može pohraniti više vrijednosti.

Definiranje cjelobrojnih varijabli

To se događa na sljedeći način:

char c; kratko int si; // važeći kratki s; //preferirano int i; dugo int li; // valjano dugo l; // poželjno long long int lli; // valjano dugo dugo ll; // poželjno

Dok se puni nazivi short int, long int i long long int mogu koristiti, njihove skraćene verzije (bez int) su poželjnije za upotrebu. Osim toga, stalno dodavanje int-ova čini kod teškim za čitanje (lako se zamijeni s varijablom).

Rasponi vrijednosti i predznak cjelobrojnih tipova podataka

Kao što već znate iz prethodne lekcije, varijabla s n brojem bitova može pohraniti 2n mogućih vrijednosti. Ali koja su to značenja? Oni koji su u dometu. Raspon- ovo su vrijednosti od i do koje određena vrsta podataka može pohraniti. Raspon cjelobrojne varijable određen je s dva čimbenika: njezinom veličinom (u bitovima) i njezinom znak(što može biti potpisan ili nepotpisan).

Cjelobrojni tip s predznakom (sa znakom) znači da varijabla može sadržavati i pozitivne i negativne brojeve. Da biste deklarirali varijablu kao potpisanu, upotrijebite ključnu riječ signed:

potpisani znak c; potpisano kratko s; potpisan int i; signirano dugo l; potpisan dug dug ll;

potpisani znak c;

potpisano kratko s ;

potpisan int i ;

potpisano dugo l ;

potpisan dug dug ll;

Prema zadanim postavkama, potpisana ključna riječ je napisana prije tipa podataka.

1-bajtna varijabla cijelog broja s predznakom ima raspon vrijednosti od -128 do 127. Bilo koja vrijednost od -128 do 127 (uključujući) može se sigurno pohraniti u nju.

U nekim slučajevima možemo unaprijed znati da se negativni brojevi neće koristiti u programu. To je vrlo uobičajeno kada se koriste varijable za pohranjivanje količine ili veličine nečega (na primjer, vaša visina ili težina ne mogu biti negativne).

Cjelobrojni tip nepotpisan (nepotpisan) može sadržavati samo pozitivne brojeve. Za deklaraciju varijable kao nepotpisan, koristite nepotpisanu ključnu riječ:

nepotpisani znak c; nepodpisano kratko s; nepotpisani int i; nepodpisano dugo l; unsigned long long ll;

nepotpisani znak c;

nepodpisano kratko s ;

unsigned int i ;

nepodpisano dugo l ;

nepodpisano dugo dugo ll ;

1-bajtna nepredznačena varijabla cijelog broja ima raspon vrijednosti od 0 do 255.

Imajte na umu da deklariranje varijable kao nepredznačene znači da ne može sadržavati negativne brojeve (samo pozitivne).

Sada kada razumijete razliku između potpisanih i nepredpisanih, pogledajmo raspone vrijednosti različitih vrsta podataka:

Veličina/vrsta Raspon vrijednosti
1 bajt potpisan -128 do 127
1 bajt bez predznaka od 0 do 255
2 bajta potpisana od -32.768 do 32.767
2 bajta bez potpisa od 0 do 65 535
4 bajta potpisana od -2 147 483 648 do 2 147 483 647
4 bajta bez predznaka od 0 do 4 294 967 295
8 bajtova potpisanih od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807
8 bajtova bez potpisa od 0 do 18 446 744 073 709 551 615

Za matematičare: Predznačena varijabla s n-tim brojem bitova ima raspon od -(2 n-1) do 2 n-1 -1. Varijabla bez predznaka s n-tim brojem bitova ima raspon od 0 do (2n)-1. Za nematematičare: koristite tablicu :)

Programeri početnici ponekad se zbune između varijabli s predznakom i bez predznaka. Ali postoji jednostavan način da zapamtite njihove razlike. Koja je razlika između negativnog i pozitivnog broja? Pravo! Minus naprijed. Ako nema minusa, onda je broj pozitivan. Prema tome, cjelobrojni tip s predznakom znači da može biti prisutan znak minus, tj. brojevi mogu biti pozitivni ili negativni. Cjelobrojni tip bez predznaka znači da je znak minus ispred potpuno odsutan, tj. brojevi mogu biti samo pozitivni.

Što je zadano: potpisano ili nepotpisano?

Dakle, što se događa ako deklariramo varijablu bez potpisa ili nepotpisanu?

Svi tipovi cjelobrojnih podataka osim char potpisani su prema zadanim postavkama. Tip char može biti s predznakom ili bez predznaka (ali je obično s predznakom).

U većini slučajeva, potpisana ključna riječ nije napisana (već se koristi prema zadanim postavkama), s izuzetkom tipa char (bolje je pojasniti ovdje).

Programeri u pravilu izbjegavaju korištenje nepredznačenih cjelobrojnih tipova osim ako za to nema posebne potrebe, jer se prema statistici kod nepredznačenih varijabli događa više pogrešaka nego kod predznačenih.

Pravilo: Koristite tipove cijelih brojeva s predznakom umjesto nepotpisan.

Prelijevanje

Pitanje: “Što se događa ako pokušamo upotrijebiti vrijednost koja je izvan raspona vrijednosti određene vrste podataka?” Odgovor: "Prelijevanje".

Prelijevanje(Engleski) "prelijevanje") događa se kada se bitovi izgube jer varijabli nije dodijeljeno dovoljno memorije za njihovo pohranjivanje.

Primjeri preljeva

Razmotrimo varijablu bez predznaka, koja se sastoji od 4 bita. Bilo koji od binarnih brojeva navedenih u gornjoj tablici stat će unutar ove varijable.

"Ali što se događa ako pokušamo dodijeliti vrijednost koja zauzima više od 4 bita?" Pravo! Prelijevanje. Naša varijabla će pohraniti samo 4 najmanje značajna bita (one s desne strane), svi ostali će biti izgubljeni.

Na primjer, ako pokušamo staviti broj 21 u našu 4-bitnu varijablu:

Dekadski sustav Binarni sustav
21 10101

Broj 21 zauzima 5 bita (10101). 4 bita s desne strane (0101) će stati u varijablu, a krajnji lijevi bit (1) jednostavno će biti izgubljen. Oni. naša varijabla će sadržavati 0101, što je jednako 101 (prednja nula se ne računa), a to je već broj 5, a ne 21.

Bilješka: Bit će posebna lekcija o pretvaranju brojeva iz binarnih u decimalne i obrnuto, gdje ćemo sve detaljno razmotriti i raspravljati.

Sada pogledajmo primjer u kodu (kratki tip ima 16 bita):

#uključi int main() ( unsigned short x = 65535; // najveća vrijednost koju 16-bitna nepredznačena varijabla std::cout može pohraniti<< "x was: " << x << std::endl; x = x + 1; // 65536 - это число больше максимально допустимого числа из диапазона допустимых значений. Следовательно, произойдёт переполнение, так как переменнная x не может хранить 17 бит std::cout << "x is now: " << x << std::endl; return 0; }

#uključi

int main()

nepredpisani kratki x = 65535 ; // najveća vrijednost koju 16-bitna nepredznačena varijabla može pohraniti

std::cout<< "x was: " << x << std :: endl ;

x = x + 1; // 65536 je broj veći od maksimalno dopuštenog broja iz raspona važećih vrijednosti. Stoga će se dogoditi preljev jer varijabla x ne može pohraniti 17 bitova

std::cout<< "x is now: " << x << std :: endl ;

vratiti 0;

x je bio: 65535
x je sada: 0

Što se dogodilo? Došlo je do preljeva jer smo pokušali strpati nešto što se nije moglo ugurati u x varijablu.

Za one koji žele znati više: Broj 65535 u binarnom obliku predstavlja se kao 1111 1111 1111 1111. 65535 je najveći broj koji 2-bajtna (16-bitna) nepredznačena varijabla cijelog broja može pohraniti jer koristi svih 16 bitova. Kada dodamo 1, dobivamo broj 65536. Broj 65536 je u binarnom obliku predstavljen kao 1 0000 0000 0000 0000 i zauzima 17 bita! Stoga se najvažniji bit (koji je 1) gubi, a svih 16 bitova s ​​desne strane se zadržava. Kombinacija 0000 0000 0000 0000 odgovara decimalnoj 0, što je naš rezultat.

Slično, dobit ćemo preljev korištenjem broja manjeg od minimuma raspona valjanih vrijednosti:

#uključi int main() ( unsigned short x = 0; // najmanja vrijednost koju 2-bajtna nepredznačena varijabla može pohraniti std::cout<< "x was: " << x << std::endl; x = x - 1; // переполнение! std::cout << "x is now: " << x << std::endl; return 0; }

#uključi

int main()

nepredpisani kratki x = 0 ; // najmanja vrijednost koju varijabla bez predznaka od 2 bajta može pohraniti

std::cout<< "x was: " << x << std :: endl ;

x = x - 1; // prelijevanje!

std::cout<< "x is now: " << x << std :: endl ;

vratiti 0;

Rezultat pokretanja gornjeg programa:

x je bio: 0
x je sada: 65535

Prelijevanje rezultira gubitkom informacija, što nikad nije dobro. Ako postoji i najmanja sumnja ili sugestija da vrijednost varijable može biti broj koji je izvan raspona dopuštenih vrijednosti tipa podataka koji se koristi, upotrijebite veći tip podataka!

Ova varalica pruža informacije o glavnim tipovima podataka programskog jezika C++ i značajkama njihove implementacije. Također, na kraju zapisa nalazi se tablica s rasponima vrijednosti ovih tipova.

Koncept tipa podataka

Glavna svrha svakog programa je obrada podataka. Različite vrste podataka različito se pohranjuju i obrađuju. U svakom algoritamskom jeziku, svaka konstanta, varijabla, izraz ili funkcija mora imati određeni tip.

Tip podataka definira:

  • interni prikaz podataka u memoriji računala;
  • skup vrijednosti koje količine ove vrste mogu poprimiti;
  • operacije i funkcije koje se mogu primijeniti na veličine ove vrste.

Na temelju ovih karakteristika, programer odabire vrstu svake veličine koja se koristi u programu za predstavljanje stvarnih objekata. Potrebna deklaracija tipa omogućuje prevoditelju provjeru valjanosti različitih programskih konstrukcija. Vrsta vrijednosti određuje strojne upute koje će se koristiti za obradu podataka.

Sve vrste jezika C++ mogu se podijeliti na Osnovni, temeljni I kompozitni . Jezik C++ definira šest glavni tipovi podataka za predstavljanje cjelobrojnih, realnih, znakovnih i logičkih vrijednosti. Na temelju ovih tipova programer može unijeti opis kompozitni vrste. To uključuje nizove, enumeracije, funkcije, strukture, reference, pokazivače, unije i klase.

Osnovni tipovi podataka u C++

Osnovni (standardni) tipovi podataka često se nazivaju aritmetičkim jer se mogu koristiti u aritmetičkim operacijama. Za opis glavnih tipova definiraju se sljedeći:

  1. int(int);
  2. char(char);
  3. wchar_t(widechar);
  4. bool(booleov);
  5. float(stvarno);
  6. dvostruko (dvostruka preciznost real).

Prva četiri tipa nazivaju se integer ( cijeli ), zadnja dva - tipovi s pomičnim zarezom . Kod koji kompajler generira za rukovanje cjelobrojnim vrijednostima razlikuje se od koda za vrijednosti s pomičnim zarezom.

Postoje četiri specifikator tipa , pojašnjavajući interni prikaz i raspon vrijednosti standardnih tipova:

  • kratak (kratak);
  • dugo (dugo);
  • potpisan(potpisan);
  • nepotpisan.

Vrsta cijelog broja (int)

Veličina tipa int nije definirana standardom, već ovisi o računalu i kompajleru. Za 16-bitni procesor, 2 bajta su dodijeljena za vrijednosti ove vrste, za 32-bitni procesor - 4 bajta.

Kratki specifikator prije imena tipa ukazuje kompajleru da se za broj moraju dodijeliti 2 bajta, bez obzira na kapacitet procesora. Specifikator long znači da će vrijednost cijelog broja zauzimati 4 bajta. Dakle, na 16-bitnom računalu ekvivalenti su int i short int, a na 32-bitnom računalu ekvivalenti su int i long int.

Interno zastupstvo vrijednosti cjelobrojnog tipa - cijeli broj u binarnom kodu. Kada se koristi specifikator s predznakom, najvažniji bit broja tumači se kao predznak (0 je pozitivan broj, 1 je negativan broj). Specifikator bez predznaka dopušta predstavljanje samo pozitivnih brojeva, budući da se najvažniji bit tretira kao dio koda broja. Dakle, raspon vrijednosti tipa int ovisi o specifikacijama. Rasponi vrijednosti vrijednosti cjelobrojnog tipa s različitim specifikatorima za IBM PC-kompatibilna računala dati su u tablici “Rasponi vrijednosti jednostavnih tipova podataka” na kraju unosa.

Prema zadanim postavkama, svi tipovi cijelih brojeva smatraju se označenima, što znači da se specifikator s predznakom može izostaviti.

Konstantama koje se nalaze u programu dodjeljuje se jedna ili druga vrsta u skladu s njihovom vrstom. Ako iz nekog razloga programer nije zadovoljan ovim tipom, može eksplicitno naznačiti traženi tip koristeći sufikse L, l (dugo) i U, u (bez predznaka). Na primjer, konstanta 32L bit će tipa long i zauzimat će 4 bajta. Možete koristiti sufikse L i U istovremeno, na primjer, 0x22UL ili 05Lu.

Bilješka

Tipovi short int, long int, signed int i unsigned int mogu se skratiti u short, long, signed i unsigned.

Vrsta znaka (char)

Vrijednosti tipa znaka dodjeljuje se broj bajtova dovoljan za smještaj bilo kojeg znaka iz skupa znakova za određeno računalo, što je ono što određuje naziv tipa. Obično je to 1 bajt. Tip char, kao i drugi cjelobrojni tipovi, može biti s predznakom ili bez predznaka. Vrijednosti s predznakom mogu pohraniti vrijednosti u rasponu od -128 do 127. Koristeći nepredpisani specifikator, vrijednosti mogu biti u rasponu od 0 do 255. To je dovoljno za pohranu bilo kojeg znaka u ASCII skupu znakova od 256 znakova. Vrijednosti tipa char također se koriste za pohranjivanje cijelih brojeva koji ne prelaze granice navedenih raspona.

Prošireni tip znakova (wchar_t)

Tip wchar_t dizajniran je za rad sa skupom znakova za koje 1 bajt nije dovoljan za kodiranje, na primjer, Unicode. Veličina ovog tipa ovisi o implementaciji; u pravilu odgovara tipu kratki. String konstante tipa wchar_t pišu se s prefiksom L, na primjer, L»Gates».

Booleov tip (bool)

Booleove vrijednosti mogu uzeti samo vrijednosti true i false, koje su rezervirane riječi. Interni oblik predstavljanja vrijednosti false je 0 (nula). Svaka druga vrijednost tumači se kao istinita. Kada se pretvori u cjelobrojni tip, true ima vrijednost 1.

Tipovi s pomičnim zarezom (float, double i long double)

C++ standard definira tri tipa podataka za pohranu stvarnih vrijednosti: float, double i long double.

Tipovi podataka s pomičnim zarezom drugačije se pohranjuju u memoriju računala od cjelobrojnih tipova podataka. Interni prikaz realnog broja sastoji se od dva dijela – mantise i eksponenta. Na IBM PC-kompatibilnim računalima, float vrijednosti zauzimaju 4 bajta, od kojih je jedna binarna znamenka dodijeljena za znak mantise, 8 bita za eksponent i 23 za mantisu. Mantisa je broj veći od 1,0, ali manji od 2,0. Budući da je vodeća znamenka mantise uvijek 1, ona se ne pohranjuje.

Za dvostruke vrijednosti koje zauzimaju 8 bajtova, 11 i 52 bita se dodjeljuju za eksponent odnosno mantisu. Duljina mantise određuje preciznost broja, a duljina eksponenta određuje njegov raspon. Kao što možete vidjeti iz tablice na kraju unosa, s istim brojem bajtova dodijeljenih za vrijednosti float i long int, rasponi njihovih dopuštenih vrijednosti uvelike se razlikuju zbog unutarnjeg oblika reprezentacije.

Dugi specifikator prije imena dvostrukog tipa označava da je za njegovu vrijednost dodijeljeno 10 bajtova.

Konstante s pomičnim zarezom prema zadanim su postavkama dvostrukog tipa. Možete eksplicitno odrediti vrstu konstante koristeći sufikse F, f (float) i L, l (dugi). Na primjer, konstanta 2E+6L će biti tipa long double, a konstanta 1.82f će biti tipa float.

Za pisanje programa koji su prenosivi na više platformi, ne možete stvarati pretpostavke o veličini tipa int. Da biste ga dobili, morate koristiti operaciju sizeof, čiji je rezultat veličina tipa u bajtovima. Na primjer, za operativni sustav MS-DOS sizeof (int) će rezultirati s 2, ali za Windows 98 ili OS/2 rezultat će biti 4.

ANSI standard ne navodi raspone vrijednosti za osnovne tipove; definirani su samo odnosi između njihovih veličina, na primjer:

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

Bilješka

Najmanje i najveće dopuštene vrijednosti za cjelobrojne tipove ovise o implementaciji i dane su u datoteci zaglavlja (), karakteristike stvarnih tipova - u datoteci (), kao i u predlošku klase numeric_limits

tip void

Osim navedenih, glavne vrste jezika uključuju void tip, ali skup vrijednosti ovog tipa je prazan. Koristi se za definiranje funkcija koje ne vraćaju vrijednost, za određivanje praznog popisa argumenata funkcije, kao osnovni tip za pokazivače i u operacijama pretvaranja tipa.

Rasponi vrijednosti jednostavnih tipova podataka u C++ za IBM PC-kompatibilna računala

P: Što znači izraz IBM PC-kompatibilno računalo?
O: IBM PC kompatibilno računalo je računalo koje je arhitekturom blisko IBM PC-u, XT i AT. IBM PC-kompatibilna računala izgrađena su na mikroprocesorima kompatibilnim s Intel 8086 (i, kao što znate, svi kasniji Intel procesori potpuno su kompatibilni s prethodnim verzijama 8086). Zapravo, to su gotovo sva moderna računala.

Uvedeni su različiti tipovi cijelih i stvarnih tipova, koji se razlikuju u rasponu i točnosti prikaza podataka, kako bi se programeru dala mogućnost najučinkovitijeg korištenja mogućnosti određene opreme, budući da brzina izračuna i količina memorije ovise o izbor vrste. Ali program optimiziran za jednu vrstu računala možda neće biti prenosiv na druge platforme, pa biste općenito trebali izbjegavati oslanjanje na specifične karakteristike tipova podataka.

Tip Raspon vrijednosti Veličina (bajt)
bool istinito i lažno 1
signed char -128 … 127 1
unsigned char 0 … 255 1
potpisan kratki međ -32 768 … 32 767 2
nepotpisani kratki međ 0 … 65 535 2
potpisan dug int -2 147 483 648 … 2 147 483 647 4
unsigned long int 0 … 4 294 967 295 4
plutati 3.4e-38 … 3.4e+38 4
dvostruko 1.7e-308 … 1.7C+308 8
duga dvostruka 3.4e-4932 … 3.4e+4932 10

Za stvarne tipove, tablica prikazuje apsolutne vrijednosti minimalnih i maksimalnih vrijednosti.

U jeziku C postoji razlika između pojmova "tip podataka" i "modifikator tipa". Tip podataka je cijeli broj, a modifikator je s predznakom ili bez predznaka. Cijeli broj s predznakom će imati i pozitivne i negativne vrijednosti, dok će cijeli broj bez predznaka imati samo pozitivne vrijednosti. U jeziku C postoji pet osnovnih tipova.

  • char – karakter.
  • Varijabla tipa char ima veličinu od 1 bajta, njene vrijednosti su različiti znakovi iz kodne tablice, na primjer: 'f', ':', 'j' (kada su napisani u programu, zatvoreni su u jedan citati).

  • int – cjelina.
  • Veličina varijable tipa int nije definirana u standardu jezika C. U većini programskih sustava veličina int varijable odgovara veličini cijele strojne riječi. Na primjer, u kompajlerima za 16-bitne procesore, varijabla tipa int ima veličinu od 2 bajta. U ovom slučaju, vrijednosti s predznakom ove varijable mogu ležati u rasponu od -32768 do 32767.

  • lebdjeti – pravi.
  • Ključna riječ float omogućuje vam definiranje varijabli stvarnog tipa. Njihove vrijednosti imaju razlomački dio odvojen točkom, na primjer: -5,6, 31,28 itd. Realni brojevi također se mogu pisati u obliku pomičnog zareza, na primjer: -1,09e+4. Broj ispred simbola "e" naziva se mantisa, a iza "e" naziva se eksponent. Varijabla tipa float zauzima 32 bita u memoriji. Može poprimiti vrijednosti u rasponu od 3,4e-38 do 3,4e+38.

  • dvostruko – dvostruka preciznost real;
  • Ključna riječ double omogućuje vam definiranje realne varijable dvostruke preciznosti. Zauzima dvostruko više memorijskog prostora od float varijable. Varijabla tipa double može poprimiti vrijednosti u rasponu od 1.7e-308 do 1.7e+308.

  • ništavno – bez vrijednosti.
  • Ključna riječ void koristi se za neutraliziranje vrijednosti objekta, na primjer, za deklariranje funkcije koja ne vraća nikakvu vrijednost.

Vrste varijabli:

Programi rade s različitim podacima, koji mogu biti jednostavni ili strukturirani. Jednostavni podaci su cijeli i realni brojevi, simboli i pokazivači (adrese objekata u memoriji). Cijeli brojevi nemaju razlomački dio, ali pravi brojevi imaju. Strukturirani podaci su nizovi i strukture; o njima će biti riječi u nastavku.

Varijabla je ćelija u memoriji računala koja ima ime i pohranjuje neku vrijednost. Vrijednost varijable se može promijeniti tijekom izvođenja programa. Kada se u ćeliju upiše nova vrijednost, stara se briše.

Dobar je stil imenovati varijable smisleno. Naziv varijable može sadržavati od jednog do 32 znaka. Dopuštena je upotreba malih i velikih slova, brojeva i podvlake koja se u C-u smatra slovom. Prvi znak mora biti slovo. Naziv varijable ne može odgovarati rezerviranim riječima.

Upišite char

char je najekonomičniji tip. Tip char može biti s predznakom ili bez predznaka. Označava se kao "signed char" (tip s predznakom) i "unsigned char" (tip bez predznaka). Predpisani tip može pohraniti vrijednosti u rasponu od -128 do +127. Bez predznaka – od 0 do 255. 1 bajt memorije (8 bita) je dodijeljen za char varijablu.

Ključne riječi s predznakom i bez predznaka označavaju kako se tumači nulti bit deklarirane varijable, tj. ako je navedena ključna riječ bez predznaka, tada se nulti bit tumači kao dio broja, inače se nulti bit tumači kao predznak.

Upišite int

Integer vrijednost int može biti short ili long. Kratka ključna riječ nalazi se iza potpisanih ili nepotpisanih ključnih riječi. Dakle, postoje vrste: signed short int, unsigned short int, signed long int, unsigned long int.

Varijabla tipa signed short int (signed short integer) može poprimiti vrijednosti od -32768 do +32767, unsigned short int (unsigned short integer) - od 0 do 65535. Svakoj od njih dodijeljena su točno dva bajta memorije (16 komadići).

Kada deklarirate varijablu tipa signed short int, ključne riječi signed i short mogu se izostaviti, a takav tip varijable može se deklarirati jednostavno int. Također je moguće deklarirati ovaj tip jednom ključnom riječi, short.

Varijabla unsigned short int može se deklarirati kao unsigned int ili unsigned short.

Za svaku vrijednost signed long int ili unsigned long int dodjeljuju se 4 bajta memorije (32 bita). Vrijednosti varijabli ovog tipa mogu biti u rasponu od -2147483648 do 2147483647 odnosno od 0 do 4294967295.

Postoje i varijable tipa long long int, za koje je alocirano 8 bajtova memorije (64 bita). Mogu biti potpisani ili nepotpisani. Za potpisani tip, raspon vrijednosti je od -9223372036854775808 do 9223372036854775807, za neoznačeni tip - od 0 do 18446744073709551615. Potpisani tip također se može deklarirati jednostavno pomoću dvije duge duge ključne riječi.

Tip Raspon Hex raspon Veličina
unsigned char 0 … 255 0x00...0xFF 8 bita
signed char
ili jednostavno
char
-128 … 127 -0x80…0x7F 8 bita
nepotpisani kratki međ
ili jednostavno
nepotpisani int ili nepotpisani kratki
0 … 65535 0x0000…0xFFFF 16 bita
potpisan kratki međ ili potpisan međ
ili jednostavno
kratak ili int
-32768 … 32767 0x8000…0x7FFF 16 bita
unsigned long int
ili jednostavno
unsigned long
0 … 4294967295 0x00000000 … 0xFFFFFFFF 32 bita
potpisan dug
ili jednostavno
dugo
-2147483648 … 2147483647 0x80000000 … 0x7FFFFFFF 32 bita
unsigned dug dug 0 … 18446744073709551615 0x0000000000000000 … 0xFFFFFFFFFFFFFFFF 64 bita
signed long long
ili jednostavno
dugo dugo
-9223372036854775808 … 9223372036854775807 0x8000000000000000 … 0x7FFFFFFFFFFFFFFF 64 bita

Deklariranje varijabli

Varijable se deklariraju u izjavi deklaracije. Izjava deklaracije sastoji se od specifikacije tipa i popisa imena varijabli odvojenih zarezima. Na kraju mora biti točka-zarez.

[modifikatori] type_specifier identifikator [, identifikator] ...

Modifikatori – ključne riječi s predznakom, bez predznaka, kratke, duge.
Specifikator tipa je ključna riječ char ili int koja specificira tip varijable koja se deklarira.
Identifikator je naziv varijable.

Znak x; int a, b, c; unsigned long long y;

Kada se deklarira, varijabla se može inicijalizirati, odnosno dodijeliti joj početnu vrijednost.

Int x = 100;

Kada se deklarira, varijabla x će odmah sadržavati broj 100. Bolje je deklarirati inicijalizirane varijable u zasebnim linijama.

U programiranju, tip podataka je skup dva skupa: skup vrijednosti i skup operacija koje se mogu primijeniti na njih. Na primjer, operacije zbrajanja (+), množenja (*), cjelobrojnog dijeljenja (/), ostatka (%) i oduzimanja (−) mogu se primijeniti na nenegativni cjelobrojni tip podataka koji se sastoji od konačnog skupa prirodnih brojeva.

Programski jezik obično ima skup primitivnih tipova podataka—tipova koje pruža programski jezik kao osnovnu ugrađenu jedinicu. U C++-u tvorac jezika takve tipove naziva temeljnim tipovima. Osnovni tipovi u C++ su:

  • boolean(bool);
  • znak (npr. char);
  • int (npr. int);
  • pokretni zarez (npr. float);
  • enumeracije (definira programer);
  • praznina .

Povrh navedenih, izgrađene su sljedeće vrste:

  • demonstrativno (npr. int*);
  • nizovi (npr. char);
  • referenca (npr. dvostruko&);
  • druge strukture.

Prijeđimo na koncept literala (na primjer, 1, 2.4F, 25e-4, ‘a’, itd.): literal je unos u izvornom kodu programa koji predstavlja fiksnu vrijednost. Drugim riječima, literal je jednostavno reprezentacija objekta (vrijednosti) neke vrste u programskom kodu. C++ ima mogućnost zapisivanja cijelih brojeva, pokretnih zareza, znakova, Booleovih vrijednosti i znakovnih znakova.

Literal cjelobrojnog tipa može se napisati kao:

  • 10. brojevni sustav. Na primjer, 1205 ;
  • 8. brojevni sustav u formatu 0 + broj. Na primjer, 0142;
  • 16. brojevni sustav u formatu 0x + broj. Na primjer, 0x2F.

24, 030, 0x18 - sve su to zapisi istog broja u različitim brojevnim sustavima.
Za pisanje brojeva s pomičnim zarezom koristite notaciju s točkama: 0,1, .5, 4. - ili u
eksponencijalni zapis - 25e-100. U takvom zapisu ne bi trebalo biti razmaka.

Ime kojem možemo pridružiti vrijednosti zapisane literalima nazivamo varijabla. Varijabla je imenovano ili na drugi način adresabilno područje memorije čija se adresa može koristiti za pristup podacima. Ti se podaci zapisuju, prepisuju i brišu u memoriji na određeni način tijekom izvođenja programa. Varijabla vam omogućuje pristup podacima u bilo kojem trenutku i, ako je potrebno, njihovu promjenu. Podaci koji se mogu dohvatiti iz naziva varijable nazivaju se vrijednošću varijable.
Kako bismo koristili varijablu u programu, ona mora biti deklarirana, a ako je potrebno, može se definirati (= inicijalizirati). Deklaracija varijable u tekstu programa nužno sadrži 2 dijela: osnovni tip i deklarator. Specifikator i inicijalizator su opcijski dijelovi:

Const int primjer = 3; // ovdje je const specifikator // int je osnovni tip // primjer je naziv varijable // = 3 - inicijalizator.

Naziv varijable je niz znakova koji se sastoji od slova latinične abecede (mala i velika slova), brojeva i/ili podvlake, ali prvi znak ne može biti broj. Naziv varijable treba odabrati tako da je uvijek lako pogoditi što pohranjuje, na primjer, “monthPayment”. U bilješkama iu praksi koristit ćemo CamelCase notaciju za pravila za zapis varijabli. Naziv varijable ne može se podudarati s riječima rezerviranim u jeziku; primjeri takvih riječi su: if, while, function, goto, switch itd.

Osim naziva varijable, deklarator može sadržavati dodatne znakove:

  • * - pokazivač; prije imena;
  • *const - stalni pokazivač; prije imena;
  • & - veza; prije imena;
  • - niz; iza imena;
  • () - funkcija; nakon imena.

Inicijalizator vam omogućuje da definirate vrijednost za varijablu odmah nakon njezine deklaracije. Inicijalizator počinje s literalom jednakosti (=), a zatim nastavlja s postavljanjem vrijednosti varijable. Općenito govoreći, znak jednakosti u C++ označava operaciju dodjele; uz njegovu pomoć možete postavljati i mijenjati vrijednost varijable. Može se razlikovati za različite vrste.

Specifikator specificira dodatne atribute osim tipa. Specifikator const naveden u primjeru omogućuje vam da zabranite naknadne promjene vrijednosti varijable. Takve nepromjenjive varijable nazivamo konstantom ili konstantom.

Deklariranje konstante bez inicijalizacije neće raditi iz logičnih razloga:

Const int EMPTY_CONST; // pogreška, konstantna varijabla nije inicijalizirana const int PRIMJER = 2; // konstanta s vrijednošću 2 PRIMJER = 3; // pogreška, pokušaj dodjeljivanja vrijednosti konstantnoj varijabli

Kod imenovanja konstanti uobičajeno je koristiti samo velika slova, odvajajući riječi podvlakom.

Osnovni tipovi podataka u C++

Dok ispituje svaki tip, čitatelj ne smije zaboraviti na definiciju tipa podataka.

1. Cjelobrojni tip (char, short (int), int, long (int), long long)

Iz imena je lako razumjeti da se skup vrijednosti sastoji od cijelih brojeva. Također, skup vrijednosti svakog od navedenih tipova može biti potpisan ili neoznačen. Broj elemenata sadržanih u skupu ovisi o veličini memorije koja se koristi za pohranu vrijednosti tog tipa. Na primjer, za varijablu tipa char dodijeljen je 1 bajt memorije, tako da će ukupni elementi biti:

  • 2 8N = 2 8 * 1 = 256, gdje je N veličina memorije u bajtovima za pohranu vrijednosti

U ovom slučaju, rasponi dostupnih cijelih brojeva su sljedeći:

  • - za unsigned char
  • [-128..127] - za signed char

Prema zadanim postavkama, cjelobrojna varijabla smatra se predznakom. Kako bi se u kodu naznačilo da varijabla mora biti nepredpisana, osnovnom tipu s lijeve strane dodaje se atribut s predznakom, tj. nepotpisan:

Duge vrijednosti bez predznaka; // specificira cjelobrojni (dugi) tip bez predznaka.

Navedeni tipovi razlikuju se samo u veličini memorije potrebne za pohranu. Budući da je jezik C++ prilično ovisan o stroju, jezični standard jamči samo sljedeće uvjete:

  • 1 = veličina znakova ≤ kratka veličina ≤ int veličina ≤ duga veličina.

Tipično su veličine tipova sljedeće: char - 1, short - 2, int - 4, long -8, long long - 8 bajtova.

Možete izvoditi aritmetičke operacije s vrijednostima cijelog tipa: +, -, *, /, %; operacije usporedbe: ==, !=,<=, <, >, >=; bitne operacije: &, |, xor,<<, >>.
Većina operacija, kao što su zbrajanje, množenje, oduzimanje i usporedba, lako je razumjeti. Ponekad, nakon izvođenja aritmetičkih operacija, rezultat može biti izvan raspona vrijednosti; u tom slučaju program će generirati grešku.
Cjelobrojno dijeljenje (/) pronalazi cjelobrojni dio jednog cijelog broja podijeljen drugim. Na primjer:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

Simbol postotka (%) označava operaciju određivanja ostatka dijeljenja dva cijela broja:

  • 6 % 4 = 2;
  • 10 % 3 = 1.

Teže razumljive operacije su one po bitovima: & (I), | (ILI), xor (isključivo ILI),<< (побитовый сдвиг влево), >> (bitni pomak udesno).

Bitne operacije AND, OR i XOR primjenjuju odgovarajuću logičku operaciju na svaki bit informacije:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 x ili 3 10 = 01 2 x ili 11 2 = 10 2

U obradi slike koriste se 3 kanala za boju: crveni, plavi i zeleni - plus prozirnost, koji se pohranjuju u int varijablu, jer svaki kanal ima raspon vrijednosti od 0 do 255. U heksadecimalnom brojevnom sustavu određena vrijednost je zapisana na sljedeći način: 0x180013FF; tada vrijednost 18 16 odgovara crvenom kanalu, 00 16 - plavom, 13 16 - zelenom, FF - alfa kanalu (prozirnost). Za odabir određenog kanala iz takvog cijelog broja koristi se tzv. maska, gdje su pozicije koje nas zanimaju F 16 ili 1 2. To jest, da biste istaknuli vrijednost plavog kanala, morate koristiti masku, tj. bitno I:

Int blue_channel = 0x180013FF & 0x00FF0000;

Nakon toga se dobivena vrijednost pomiče udesno za potreban broj bitova.

Pomak bita pomiče broj lijevo ili desno za onoliko binarnih znamenki koliko je navedeno na desnoj strani operacije. Na primjer, broj 39 za tip char binarno je napisan na sljedeći način: 00100111. Zatim:

Char binaryExample = 39; // 00100111 char rezultat = binarniPrimjer<< 2; // сдвигаем 2 бита влево, результат: 10011100

Ako je varijabla nepredznačenog tipa, tada će rezultat biti broj 156, za predznačenu je jednak -100. Imajte na umu da je za tipove cjelobrojnih brojeva s predznakom jedinica u najznačajnijem bitu reprezentacije bita znak da je broj negativan. U ovom slučaju, vrijednost u binarnom obliku koja se sastoji od svih jedinica odgovara -1; ako je 1 samo u najznačajnijoj znamenki, a ostale znamenke su nule, tada takav broj ima minimalnu vrijednost za određeni tip: za char je -128.

2. Tip s pomičnim zarezom (float, double (float))

Skup vrijednosti s pomičnim zarezom je podskup realnih brojeva, ali nije svaki realni broj moguće predstaviti u binarnom obliku, što ponekad dovodi do glupih pogrešaka:

Plutajuća vrijednost = 0,2; vrijednost == 0,2; // pogreška, vrijednost ovdje neće biti jednaka 0,2.

Kada radi s varijablama s pomičnim zarezom, programer ne bi trebao koristiti test jednakosti ili nejednakosti; umjesto toga obično se koristi test za padanje unutar određenog intervala:

Vrijednost - 0,2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

Osim operacija usporedbe, tip s pomičnim zarezom podržava 4 aritmetičke operacije koje u potpunosti odgovaraju matematičkim operacijama s realnim brojevima.

3. Booleov (logički) tip (bool)

Sastoji se od samo dvije vrijednosti: istina (true) i laž (false). Za rad s varijablama ove vrste koriste se logičke operacije: ! (NE), == (jednakost), != (nejednakost), && (logički I), || (logički ILI). Rezultat svake operacije može se pronaći u odgovarajućoj tablici istine. Na primjer:

X Y XOR0 0 0 0 1 1 1 0 1 1 1 0

4. Vrsta znaka (char, wchar_t)

Tip char nije samo cjelobrojni tip (obično se ovaj tip naziva bajt), već i karakterni tip, koji pohranjuje broj znaka iz tablice kao ASCII znak. Na primjer, kod 0x41 odgovara znaku 'A', a 0x71 - 't'.

Ponekad postaje potrebno koristiti znakove koji nisu fiksni u ASCII tablicama i stoga zahtijevaju više od 1 bajta za pohranu. Za njih postoji široki znak (wchar_t).

5.1. Nizovi

Nizovi vam omogućuju pohranjivanje sekvencijalnog skupa elemenata iste vrste. Niz je pohranjen u memoriji kao susjedni blok, tako da ne možete deklarirati niz bez navođenja njegove veličine. Za deklaraciju niza, uglate zagrade () se pišu iza naziva varijable koja označava njezinu veličinu. Na primjer:

Int myArray; // Niz od 5 elemenata cjelobrojnog tipa

Za inicijalizaciju niza, vrijednosti su navedene u vitičastim zagradama. Možete inicijalizirati na ovaj način samo u vrijeme deklaracije varijable. Usput, u ovom slučaju nije potrebno odrediti veličinu niza:

Int izgledi = (1, 3, 7, 9, 11); // Niz je inicijaliziran s 5 vrijednosti

Za pristup određenoj vrijednosti u nizu (elementu niza), upotrijebite operaciju pristupa indeksu () koja označava broj elementa (brojevi počinju od 0). Na primjer:

Izgledi; // pristup prvom elementu niza. Vraća vrijednost 1 kvota; // pristup trećem elementu. Vraća vrijednost 7 izgledi = 13; // Dodijeli novu vrijednost 5. elementu niza kvota; // greška pristupa

5.3. Žice

Da bi napisali niz, programeri koriste ideju da je niz sekvencijalni niz (niz) znakova. Za prepoznavanje kraja retka upotrijebite poseban znak za kraj retka: '\0'. Ovi posebni znakovi, koji se sastoje od obrnute kose crte i identifikacijskog znaka, nazivaju se kontrolnim ili izlaznim znakovima. Tu su i npr. '\n' - početak novog retka, '\t' - tablični prikaz. Za pisanje obrnute kose crte u nizu koristi se escape - još jedna kosa crta se stavlja prije samog znaka: '\'. Izbjegavanje se također koristi za pisanje navodnika.

Kreirajmo string varijablu:

Char textExample = ('T', 'e', ​​​​'s', 't', '\0'); // napisan je niz “Test”.

Postoji pojednostavljena notacija za inicijalizaciju niza:

Char textExample = “Test”; // Zadnji znak nije napisan, ali veličina je i dalje 5

Ne ulazeći u detalje, evo još jedne korisne vrste podataka - niz. Žice
Ova vrsta se može, na primjer, dodati:

String hello = "Zdravo,"; ime niza = "Maks!"; niz hello_name = hello + ime; // Dobivanje niza "Zdravo, Max!"

6. Veza

Int a = 2; // varijabla "a" pokazuje na vrijednost 2 int &b = a; // varijabla “b” pokazuje na isto mjesto kao i “a” b = 4; // promjenom vrijednosti b, programer mijenja vrijednost a. Sada je a = 4 int &c = 4; // pogreška, ne možete to učiniti jer referenci se ne može dodijeliti vrijednost

7. Kazalo

Da biste razumjeli ovu vrstu podataka, morate zapamtiti da su mnoge vrijednosti ove vrste adrese memorijskih ćelija gdje podaci počinju. Pokazivač također podržava operacije zbrajanja (+), oduzimanja (-) i dereferenciranja (*).

Adrese 0x0 znače da je pokazivač prazan, tj. ne upućuje na nikakve podatke. Ova adresa ima vlastiti literal - NULL:

Int *nullPtr = NULL; // nulti pokazivač

Zbrajanje i oduzimanje adrese s cijelim brojem ili drugom adresom dopušta
kretati se po memoriji dostupnoj programu.

Operacija dohvaćanja podataka počevši od adrese pohranjene u pokazivaču naziva se dereferenciranje (*). Program očitava potreban broj memorijskih ćelija i vraća vrijednost pohranjenu u memoriji.

Int vrijednost u memoriji = 2; // postavi varijablu cjelobrojnog tipa int *somePtr = // kopiraj adresu varijable, ovdje & - vraća adresu varijable somePtr; // adresa memorijske ćelije, na primjer, 0x2F *somePtr; // vrijednost je pohranjena u 4 ćelije: 0x2F, 0x30, 0x31 i 0x32

Operacija dodjele, koja je sintaktički ista kao operacija kopiranja, nije dostupna za pokazivače. Drugim riječima, možete kopirati adresu drugog pokazivača ili adresu varijable, ali ne možete sami odrediti vrijednost adrese.

Sam pokazivač je pohranjen u memoriji, poput vrijednosti varijabli drugih tipova, i zauzima 4 bajta, tako da možete stvoriti pokazivač na pokazivač.

8. Prijenosi

Nabrajanja su jedina osnovna vrsta koju definira programer. Uglavnom, enumeracija je uređeni skup imenovanih cjelobrojnih konstanti, pri čemu je naziv enumeracije osnovni tip.

Enum boja (CRVENA, PLAVA, ZELENA);

Prema zadanim postavkama, CRVENA = 0, PLAVA = 1, ZELENA = 2. Stoga se vrijednosti mogu međusobno uspoređivati, tj. CRVENA< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

Enum pristup (READ = 1, WRITE = 2, EXEC = 4);

Često je zgodno koristiti nabrajanja čije su vrijednosti potencije dvojke, jer u binarnom prikazu, broj koji je potencija broja 2 sastojat će se od 1 i nula. Na primjer:

8 10 = 00001000 2

Rezultat zbrajanja ovih brojeva uvijek jasno pokazuje koji su brojevi dodani:

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

Poništiti

Sintaktički tip void spada u temeljne tipove, ali se može koristiti samo u sklopu složenijih tipova, jer Ne postoje objekti tipa void. Obično se ovaj tip koristi za označavanje da funkcija nema povratnu vrijednost ili kao osnovni tip pokazivača na objekte nedefiniranih tipova:

Prazan objekt; // pogreška, nema objekata tipa void void // pogreška, nema referenci na void void *ptr; // ok, pohrani pokazivač na nepoznati tip

Često ćemo posebno koristiti void da označimo da funkcija ne vraća nikakvu vrijednost. Pokazivač void tipa koristi se kada programer preuzima punu odgovornost za integritet memorije i ispravno pretvaranje tipa.

Cast

Često je potrebno pretvoriti vrijednost varijable jednog tipa u drugi. U slučaju kada je skup vrijednosti izvornog tipa podskup većeg tipa (na primjer, int je podskup long, a long je double), prevodilac može implicitno ( implicitno) promijenite vrstu vrijednosti.

cijeli broj = 2; float floating = cijeli broj; // plutajući = 2.0

Izvršit će se obrnuto pretvaranje tipa uz gubitak informacija, tako da će ostati samo cjelobrojni dio broja s pomičnim zarezom, a razlomački dio će biti izgubljen.

Postoji mogućnost eksplicitne pretvorbe tipa; za to, lijevo od varijable ili bilo koje vrijednosti izvornog tipa, upišite tip na koji će se izvršiti pretvorba u zagradama:

Int vrijednost = (int) 2,5;

Unarne i binarne operacije

Operacije koje smo ranije izveli nazivaju se binarne: lijevo i desno od simbola operacije su vrijednosti ili varijable, na primjer, 2 + 3. Osim binarnih operacija, programski jezici također koriste unarne operacije koje se odnose na varijable . Mogu se nalaziti lijevo ili desno od varijable; nekoliko takvih operacija se već susrelo - operacija dereferenciranja (*) i uzimanje adrese varijable (&) su unarne. Operatori “++” i “—” povećavaju odnosno smanjuju vrijednost cjelobrojne varijable za 1, a mogu se pisati lijevo ili desno od varijable.

C++ također koristi stenografski zapis za binarne operacije u slučaju kada lijeva i desna strana izraza sadrže istu varijablu, tj. neka operacija se izvodi nad vrijednošću varijable i rezultat operacije se pohranjuje u istoj varijabli:

A += 2; // isto kao a = a + 2; b /= 5; // isto kao b = b / 5; c &= 3; // isto kao c = c & 3;