Char kakav tip. Vrste podataka u C. Programiranje u C jeziku. Booleov tip podataka u SI

Vrste podataka. Program u proceduralnim jezicima, koji uključuje C, je opis operacija nad količinama različitih vrsta. Tip definira skup vrijednosti koje vrijednost može uzeti i skup operacija u kojima može sudjelovati.

U jeziku C, tipovi su povezani s imenima (identifikatorima) veličina, tj. s varijablama. Varijabla u jeziku C povezana je s memorijskom lokacijom. Tip varijable specificira veličinu ćelije, način na koji je njen sadržaj kodiran i prihvatljive transformacije vrijednosti ove varijable. Sve varijable moraju biti deklarirane prije upotrebe. Svaka varijabla mora biti deklarirana samo jednom.

Opis se sastoji od specifikatora tipa iza kojeg slijedi popis varijabli. Varijable na popisu odvojene su zarezima. Na kraju opisa stavlja se točka i zarez.

Primjeri opisa:

char a,b; /* Varijable a i b imaju tip

char */ inth; /* Varijabla x - tip int

*/ char sym; /" Opisane su Sym varijable tip char;

*/ int count.num; /* broj i broj tipa int */

Varijablama se mogu dodijeliti početne vrijednosti unutar njihovih deklaracija. Ako je iza imena varijable znak jednakosti i konstanta, ta konstanta služi kao inicijalizator.

Primjeri: char backch = "\0";

Pogledajmo glavne tipove u jeziku C.

int - cijeli broj ("cijeli broj"). Vrijednosti ove vrste su cijeli brojevi iz nekog ograničenog raspona (obično od - 32768 do 32767). Raspon je određen veličinom ćelije za tip i ovisi o određenom računalu. Osim toga, postoje funkcijske riječi koje se mogu koristiti s tipom int: short int (“kratki cijeli broj” - “kratki cijeli broj”), unsigned int (“cijeli broj bez predznaka” - “cijeli broj bez predznaka”), long int (“dugi cijeli broj” ”), koji smanjuju ili, obrnuto, proširuju raspon prikaza brojeva.

char- karakter ("karakter"). Važeća vrijednost za ovu vrstu je jedan znak (nemojte ga brkati s tekstom!). Simbol je ispisan apostrofima.

Primjeri:"x"2"?"

U memoriji računala znak zauzima jedan bajt. Zapravo se ne pohranjuje znak, već broj - šifra znaka (od 0 do 255). Posebne tablice kodiranja pokazuju sve važeće znakove i njihove odgovarajuće kodove.

U jeziku C dopušteno je koristiti tip char kao numerički, odnosno izvoditi operacije s kodom znaka, koristeći specifikator tipa integer u zagradi - (int).

float - stvaran (pokretni zarez). Vrijednosti ovog tipa su brojevi, ali, za razliku od char i int, nisu nužno cijeli brojevi.

12,87 -316,12 -3,345e5 12,345e-15

dvostruko - realni brojevi dvostruke preciznosti. Ovaj tip je sličan float tipu, ali ima znatno veći raspon vrijednosti (na primjer, za programski sustav Borland-C od 1.7E-308 do 1.7E+308 umjesto raspona od 3.4E-38 do 3,4E+38 for tip plovka). Međutim, povećanje raspona i točnosti prikaza brojeva dovodi do smanjenja brzine izvršavanja programa i rasipnog korištenja OVAN računalo.


Imajte na umu da ovaj popis ne uključuje vrsta niza. Ne postoji poseban tip u C-u koji se može koristiti za opisivanje nizova. Umjesto toga, nizovi su predstavljeni kao niz elemenata char. To znači da će se znakovi u nizu nalaziti u susjednim memorijskim ćelijama.

Treba napomenuti da je zadnji element niza znak \0. Ovo je "null" znak, au jeziku C se koristi za označavanje kraja niza. Nulti znak nije broj 0; ne ispisuje se i ima broj 0 u tablici ASCII koda, što znači da broj ćelija u nizu mora biti. Po najmanje, jedan više od broja znakova koje je potrebno pohraniti u memoriju.

Navedimo primjer korištenja nizova.

Program 84

#uključi glavni()

scanf("%s",string) ;

printf("%s",string);

Ovaj primjer opisuje niz od 31 memorijske lokacije, od kojih 30 može sadržavati jedan char element. Unosi se prilikom poziva funkcije scanf("%s",string); "&" nedostaje kada se navodi niz znakova.

Putokazi. Pokazivač je neki simbolički prikaz adrese memorijskog mjesta dodijeljenog varijabli.

Na primjer, &name je pokazivač na varijablu name;

Ovdje & je operacija dobivanja adrese. Stvarna adresa je broj, a simbolički prikaz adrese & imena je konstanta pokazivača.

Jezik C također ima varijable tipa pokazivača. Kao što je vrijednost char varijable znak, a vrijednost int varijable cijeli broj, vrijednost pokazivačke varijable je adresa neke vrijednosti.

Ako pokazivaču damo ime ptr, možemo napisati izjavu poput ove:

ptr = /* dodjeljuje naziv adrese varijabli ptr */

U ovom slučaju kažemo da je prt "pokazivač na" ime. Razlika između dvije oznake: ptr i &name je u tome što je prt varijabla, dok je &name konstanta. Ako je potrebno, možete učiniti da ptr varijabla pokazuje na neki drugi objekt:

ptr= /* ptr pokazuje na bah, ne na ime */

Sada je vrijednost varijable prt adresa varijable bah. Pretpostavimo da znamo da varijabla ptr sadrži referencu na varijablu bah. Zatim, za pristup vrijednosti ove varijable, možete koristiti operaciju "neizravno adresiranje" *:

val = *ptr; /* definira vrijednost na koju ukazuje ptr */ Posljednje dvije izjave uzete zajedno ekvivalentne su sljedećem:

Dakle, kad iza znaka & nakon čega slijedi naziv varijable, rezultat operacije je adresa navedene varijable; &medicinska sestra daje adresu varijable medicinska sestra; kada nakon * slijedi pokazivač na varijablu, rezultat operacije je vrijednost smještena u memorijsku lokaciju na navedenoj adresi.

Primjer: sestra = 22;

ptr = /* pokazivač na medicinsku sestru */

Rezultat je dodjela vrijednosti 22 varijabli val.

Nije dovoljno reći da je varijabla pokazivač. Osim toga, potrebno je naznačiti o kojoj vrsti varijable se govori ovaj pokazivač. Razlog je što varijable različitih vrsta zauzimaju drugačiji broj memorijske lokacije, dok neke operacije povezane s pokazivačem zahtijevaju poznavanje količine dodijeljene memorije.

Primjeri točan opis pokazivači: int *pi; char *pc;

Specifikacija tipa specificira tip varijable na koju se pokazivač odnosi, a znak * identificira samu varijablu kao pokazivač. Opis tipa int *pi; kaže da je pi pokazivač i da je *pi int vrijednost.

Jezik C pruža mogućnost definiranja naziva tipova podataka. Možete dodijeliti ime bilo kojem tipu podataka koristeći typedef i koristiti to ime kasnije pri opisivanju objekata.

Format: typedef<старый тип> <новый тип> Primjer: typedef long LARGE; /* definira veliki tip, koji je ekvivalentan dugom tipu */

Typedef ne uvodi nikakve nove tipove, već samo dodaje novo ime već postojećem postojeći tip. Varijable deklarirane na ovaj način imaju točno ista svojstva kao varijable deklarirane eksplicitno. Preimenovanje tipova koristi se za uvođenje smislenih ili skraćenih naziva tipova, što poboljšava razumljivost programa i za poboljšanje prenosivosti programa (imena istog tipa podataka mogu se razlikovati na različitim računalima).

Operacije. Jezik C odlikuje se velikom raznolikošću operacija (više od 40). Ovdje ćemo razmotriti samo one glavne, tablicu. 3.3.

Aritmetičke operacije. To uključuje

Dodaj(+),

Oduzimanje (binarno) (-),

Množenje (*),

Divizija (/),

Ostatak cijelog odjeljka (%),

Oduzimanje (unarno) (-) .

Jezik C ima pravilo: ako su djelitelj i djelitelj tipa int, onda se dijeljenje izvodi kao cjelina, tj. razlomački dio rezultat se odbacuje.

Kao i obično, u izrazima se operacije množenja, dijeljenja i ostatka izvode prije zbrajanja i oduzimanja. Za promjenu redoslijeda radnji koristite zagrade.

Program 85

#uključi

5 = -3 + 4 * 5 - 6; printf("%d\n",s);

s = -3 + 4% 5 - 6; printf("%d\n",s);

s = -3 * 4% - 6/5; printf("%d\n",s);

s= (7 + 6)%5/2; printf("%d\n",s);

Rezultat izvršenja programa: 11 1 0 1

Tablica 3.3 Prioritet i redoslijed operacija

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. Podaci razne vrste drugačije pohranjeni i obrađeni. 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 mogu poprimiti količine ovog tipa;
  • operacije i funkcije koje se mogu primijeniti na veličine ove vrste.

Na temelju tih 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 I kompozitni . Jezik C++ definira šest glavni tipovi podataka za predstavljanje cjelobrojnih, realnih, znakovnih i logičke 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čki jer se mogu koristiti u aritmetičke operacije. 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 obradu cjelobrojnih vrijednosti razlikuje se od koda za vrijednosti s pomičnim zarezom.

Četiri su 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 naziva tipa ukazuje kompajleru da se za broj moraju dodijeliti 2 bajta, bez obzira na bitni 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 - integer in binarni kod. 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 specifikacijama za IBM PC-kompatibilna računala dani su u tablici "Rasponi vrijednosti jednostavne vrste podaci" na kraju snimke.

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 ovog računala, koji je odredio naziv vrste. 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 jesu rezervirane riječi. Obrazac interne reprezentacije lažne vrijednosti- 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. Interno zastupstvo pravi broj sastoji se od dva dijela – mantise i reda. 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 float i long int vrijednosti, 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.

Pisati prijenosno razne platforme programi ne mogu 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 operacijsku salu MS-DOS sustavi sizeof(int) će rezultirati s 2, ali na 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

Minimum i maksimum važeće vrijednosti za cjelobrojne tipove ovise o implementaciji i dani 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 tip void, ali skup vrijednosti ove vrste je prazan. Koristi se za definiranje funkcija koje ne vraćaju vrijednost, za označavanje prazna lista argumente 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 kompatibilan računala su izgrađena na mikroprocesorima kompatibilnim s Intel 8086 (i, kao što znate, svi oni koji su kasnije objavljeni Intel procesori imati pun unatrag kompatibilan od 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
lebdjeti 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 prave tipove prikazana je tablica apsolutne vrijednosti minimalne i maksimalne vrijednosti.

Tipovi podataka u C-u su klase podataka čije vrijednosti imaju slične karakteristike. Tip definira interni prikaz podataka u memoriji. Najosnovniji tipovi podataka: logički, cijeli brojevi, brojevi s pomičnim zarezom, nizovi, pokazivači.

S dinamičkim tipkanjem, varijabla je povezana s tipom u trenutku inicijalizacije. Ispada da varijabla u različitim dijelovima koda može imati različite vrste. Podržano je dinamičko tipkanje Java skripta, Python, Ruby, PHP.

Statičko tipkanje je suprotno od dinamičkog tipkanja. Kada se deklarira, varijabla dobiva tip koji se kasnije ne mijenja. C i C++ jezici su upravo to. Ova metoda je najprikladnija za pisanje složenog koda, a mnoge se pogreške eliminiraju u fazi kompilacije.

Jezici se neformalno dijele na jako tipizirane i slabo tipizirane. Strogo tipkanje znači da će prevodilac baciti pogrešku ako se očekivani i stvarni tipovi ne podudaraju.

x = 1 + “2”; //pogreška - ne možete dodati simbol broju

Primjer slabog tipkanja.

Provjeru dosljednosti tipa provodi sigurnosni sustav tipa. Do pogreške u tipkanju dolazi, na primjer, kada se pokušava koristiti broj kao funkcija. Postoje netipizirani jezici. Za razliku od tipiziranih, oni vam omogućuju izvođenje bilo koje operacije na svakom objektu.

Klase pamćenja

Varijable, bez obzira na njihov tip, imaju svoj opseg i životni vijek.

Klase pamćenja:

  • auto;
  • statički;
  • vanjski;
  • registar.

Sve varijable u jeziku C su prema zadanim postavkama lokalne. Mogu se koristiti samo unutar funkcije ili bloka. Kada funkcija završi, njihova vrijednost se uništava.

Statička varijabla također je lokalna, ali može imati različitu vrijednost izvan svog bloka, a vrijednost se zadržava između poziva funkcije.

Vanjska varijabla je globalna. Dostupan je u bilo kojem dijelu koda, pa čak iu drugoj datoteci.

Specifikatori tipa podataka u C-u možda neće biti navedeni u sljedećim slučajevima:

  1. Sve varijable unutar bloka nisu varijable; stoga, ako se namjerava koristiti ova određena memorijska klasa, tada se ne navodi automatski specifikator.
  2. Sve funkcije deklarirane izvan bloka ili funkcije su globalne prema zadanim postavkama, tako da extern specifikator nije potreban.

Za označavanje jednostavnih tipova koristite specifikatore int, char, float ili double. Modifikatori unsigned, signed, short, long, long long mogu se zamijeniti varijablama.

Prema zadanim postavkama, svi brojevi su potpisani, mogu biti samo u rasponu pozitivni brojevi. Za definiranje varijable tipa char kao signed, napišite signed char. Dugo, dugo, dugo i kratko pokazuju koliko je memorijskog prostora dodijeljeno za pohranu. Najveća je duga duga, najmanja je kratka.

Char je najmanji tip podataka u C-u. Samo 1 bajt memorije dodijeljen je za pohranu vrijednosti. Varijabli tipa character obično se dodjeljuju znakovi, rjeđe - brojevi. Vrijednosti znakova nalaze se u navodnicima.

Tip int pohranjuje cijele brojeve, veličina mu je nedefinirana - zauzima do 4 bajta memorije, ovisno o arhitekturi računala.

Eksplicitna konverzija varijable bez predznaka navedena je na sljedeći način:

Implicitni izgleda ovako:

Float i double definiraju brojeve s točkom. Brojevi float predstavljeni su kao -2,3 ili 3,34. Double se koristi za veću preciznost - nakon razdjelnika cijelog broja i razlomka navedeno je više znamenki. Ovaj tip zauzima više memorijskog prostora nego float.

Praznina ima prazna vrijednost. Definira funkcije koje ništa ne vraćaju. Ovaj specifikator navodi praznu vrijednost u argumentima metode. Pokazivači, koji mogu prihvatiti bilo koji tip podataka, također su definirani kao prazni.

Booleov tip Bool

Koristi se u testovima stanja i petljama. Ima samo dva značenja:

  • pravi;
  • laž.

Booleove vrijednosti mogu se pretvoriti u int vrijednost. True je ekvivalent jedan, false je ekvivalent nula. Pretvorba tipa moguća je samo između bool i int, inače će kompajler izbaciti pogrešku.

if (x) ( //Pogreška: "Ne mogu implicitno pretvoriti tip 'int' u 'bool""

if (x != 0) // C# način

Nizovi i nizovi

Nizovi su složeni tipovi podataka u C-u. PL ne radi s nizovima na isti način kao Javascript ili Ruby. U C-u su svi nizovi nizovi elemenata sa znakovnom vrijednošću. Linije završavaju nultim bajtom "

Osim podjele podataka na varijable i konstante, postoji klasifikacija podataka prema vrsti. Opis varijabli prvenstveno se sastoji od deklaracije njihovog tipa. Tip podataka karakterizira raspon njegovih vrijednosti i oblik prikaza u memoriji računala. Svaku vrstu karakterizira skup operacija koje se izvode nad podacima. Tradicionalno, u univerzalnim programskim jezicima postoje takvi standardne vrste, kao cijeli, realni, simbolički i logički 3. Odmah napomenimo da u C-u ne postoji logički tip. Izraz (u posebnom slučaju, varijabla) se smatra istinitim ako nije nula, inače se smatra lažnim.

Postojanje dvaju numeričkih tipova (cjelobrojnog i realnog) povezuje se s dva moguća oblika predstavljanja brojeva u memoriji računala.

Podaci cijeli tip pohranjeni u prezentacijskom obliku fiksna točka. Odlikuje ga apsolutna točnost u predstavljanju brojeva i izvođenju operacija nad njima, kao i ograničen raspon vrijednosti brojeva. Cjelobrojni tip koristi se za podatke koji u načelu ne mogu imati razlomački dio (broj ljudi, automobila i sl., brojevi i brojači).

Upišite pravi odgovara obliku prikaza broja pokretni zarez, koju karakterizira aproksimativni prikaz broja sa zadanim brojem značajnih znamenki (znakovi mantisa) i velikim rasponom reda broja, što omogućuje predstavljanje i vrlo velikih i vrlo malih brojeva u apsolutnoj vrijednosti. Zbog približnog prikaza podataka stvarnog tipa, njihov netočno je uspoređivati ​​radi jednakosti.

U suvremenim implementacijama univerzalnih programskih jezika obično postoji nekoliko cijelih i nekoliko realnih tipova, od kojih je svaki karakteriziran svojom veličinom memorije dodijeljenom za jednu vrijednost i, sukladno tome, svojim rasponom brojčanih vrijednosti, a za realne tipove - i svojom preciznošću (broj znamenki mantise).

Podaci vrsta znaka uzeti vrijednosti na cijelom skupu znakova dopuštenih za određeno računalo. Jedan bajt je dodijeljen za pohranu jedne vrijednosti znaka; znakovi su kodirani u skladu sa standardnom tablicom kodiranja (obično ASCII).

U C-u postoje 4 osnovne vrste:

char- vrsta znaka;

int- cijeli tip,

lebdjeti- stvarni tip jednostruke preciznosti,

dvostruko- stvarni tip dvostruke preciznosti.

Za definiranje izvedenih tipova koristite kvalifikacije:kratak(kratko) - koristi se s tipom int,dugo(dugo) - koristi se s tipovima int I dvostruko;potpisan(sa znakom), nepotpisan(bez predznaka) - primjenjivo na bilo koji cjelobrojni tip. U nedostatku riječi unsigned, vrijednost se smatra potpisanom, tj. tj. zadana je potpisana. Zbog dopuštenosti proizvoljnog kombiniranja kvalifikativa i naziva osnovne vrste jedna vrsta može imati više oznaka. Podaci o standardnim tipovima C prikazani su u tablicama 1 i 2. Deskriptori sinonima navedeni su u ćelijama prvog stupca, odvojeni zarezima.

Tablica 1. Standardni C tipovi cjelobrojnih podataka

Vrsta podataka

Raspon vrijednosti

char, signed char

unsigned int, bez predznaka

int, signed int, short int, short

2147483648...2147483647

Zanimljivo je da se u C-u tip char može koristiti kao znak ili kao cjelobrojni tip, ovisno o kontekstu.

Tablica 2. Standardni C pravi tipovi podataka

Komentar. Za pisanje programa za prvi dio priručnika uglavnom će nam trebati dvije vrste:lebdjetiIint.

  Tip podataka je opis raspona vrijednosti koje varijabla određenog tipa može uzeti. Svaki tip podataka karakterizira:
   1. broj zauzetih bajtova (veličina)
   2. raspon vrijednosti koje varijabla ove vrste može poprimiti.

Sve vrste podataka mogu se podijeliti u sljedeće vrste:
   1. jednostavni (skalarni) i složeni (vektorski) tipovi;
   2. osnovni (sustav) i korisnički (koje definira korisnik).
  U SI jeziku sustav osnovnih tipova čine četiri tipa podataka:
   1. simbolično,
   2. cijeli broj,
   3. stvarna jednostruka preciznost,
   4. dvostruka preciznost pravi.

Detaljan opis tipova podataka u SI jeziku

tip Vrsta lika Cjelobrojni tip Stvarni tip jednostruke preciznosti Pravi tip dvostruke preciznosti
opis char int lebdjeti dvostruko
veličina 1 bajt (8 bita) 4 bajta (32 bita) 4 bajta (32 bita)
23 bita – mantisa;
8 bita – poredak;
1 bit – znak.
8 bajtova (64 bita)
52 bita – mantisa;
11 bita – poredak;
1 bit – znak.
raspon vrijednosti -128 ... 127 2147483648 ... 2147483647 ±3,4E±38
Točnost do 7 decimalnih mjesta
±1,7E±308
Točnost do 17 decimalnih mjesta

SI jezik nudi dvije vrste modifikatora tipa podataka:
   1. modifikatori predznaka: predznak i nepredznak.
   2. modifikatori veličine: kratki i dugi.
  Modifikatori tipa detaljnije su opisani u tablici:

Kompleksni brojevi u SI

  Kompleksni brojevi uvedeni su u standard C99.
   float_Complex
   dvostruki_kompleks
   long double_Complex
  Sva je ova sreća biti u knjižnici složen.h :)

Minimalno i maksimalne vrijednosti svi osnovni tipovi podataka SI jezika opisani su u bibliotekama: limits.h – sadrži raspone cjelobrojnih vrijednosti, float.h – sadrži raspone realnih vrijednosti.

Booleov tip podataka u SI

  Standard C89:

  Booleov tipint
    0 – lažno;
    ne 0 – istina. To jest, logički tip kao takav nije stvoren, već se umjesto njega koristi int.
  Standard C99:
   Booleov tip - _Bool
  Ključne riječi: bool true false
A ovo je sreća u knjižnici stdbool.h

Operatori deklaracije

  Varijabla – imenovano područje memorije računalo, dizajniran za pohranu vrijednosti određena vrsta, s metodom slučajnog pristupa: čitanje i pisanje. Naziv varijable je legalni SI identifikator koji se prethodno nije koristio za označavanje drugih varijabli, tipova, članova enumeracije ili naziva funkcija. Operator deklaracije varijable ima sljedeću sintaksu: upišite ime1[,ime2[,...]]; Primjeri:
  int a, b, c;
  dvostruko x, y;
  char ch;
  Postoje neka neizgovorena pravila, odnosno izvršenje koje je dobro, ali ovo nije potrebno učiniti:
   1. svaka deklaracija varijabli novog tipa počinje u novom retku;
   2. iz imena varijable bi trebalo biti jasno zašto je i što će se u nju pohraniti (iako ponekad zbog ovakvih informativnih naziva padne brzina pisanja koda, jer se neki ljudi zbune i varijablama nazivaju cijele rečenice);
   3. Stoga se pojavljuje pravilo: naziv varijable ne smije biti predug;
   4. nakon deklariranja varijable vrlo je poželjno u komentarima naznačiti za što služi;
   5. Imena varijabli potrebno je odvojiti razmacima.
  Operator deklaracije varijable s inicijalizacijom ima sljedeću sintaksu: upišite ime1[=vrijednost1][, ime2[=vrijednost2][,...]]; Primjeri:
  int a=26, b=032, c=0x1A;
  dvostruko x=2.5e2,y=0x1.ffe-3;
  char ch='Z';

Konstante u SI

  U SI jeziku postoje tri vrste konstanti:
   1. cijeli brojevi,
   2. pravi,
   3. simbolički.
  Cjelobrojne konstante
   1. Označena je decimalna konstanta decimalni u uobičajenom obliku.
   2. Oktalna konstanta označena je brojem koji počinje znamenkom nula i sadrži znamenke 0...7.
   3. Heksadecimalna konstanta označena je cijelim brojem s prefiksom 0x ili 0X, koji sadrži brojeve 0...9 i slova latinične abecede a...f, A...F.
  Realne konstante zapisuju se decimalno ili heksadecimalni sustav račun. Položaj zareza označen je točkom, a iza njega je eksponent latinično pismo e (ili E). Konstante znakova ispred znaka \, ovo je takozvano "bježanje". SI jezik sadrži posebne znakove:
   ‘\’ – jednostruki navodnici,
   ‘\”’ – dvostruki navodnici,
   ‘\\’ – obrnuta kosa crta,
   ‘\?’ – upitnik,
   ‘\a’ – zvučni signal,
   ‘\b’ – brisanje znaka,
   ‘\f’ – pomicanje stranice,
   ‘\n’ – novi redak,
   ‘\r’ – povratak na početak retka,
   ‘\t’ – horizontalni jezičak,
   ‘\v’ – okomita kartica.

U SI također možete kreirati varijable koje imaju konstantnu vrijednost (njihova vrijednost se ne može mijenjati). Deklaracija takvih “varijabli” ima sljedeću sintaksu: const tip ime1=vrijednost1[,ime2=vrijednost2[,...]]; Primjeri:
   const unsigned int x=80, y=25;
   const dvostruko pi=3,1415;

Operator za stvaranje tipova podataka u SI

  Za kreiranje se koristi operator typedef prilagođene vrste podaci, sintaksa za njihovu upotrebu: typedef old_type_name new_type_name; Primjer:
   typedef unsigned int riječ;
  U SI, prema standardu, definicija tipa može se napraviti gotovo bilo gdje u programu (tj. ne postoji strogo definiran blok za definiranje tipa podataka, ili varijable bilo kojeg tipa: sizeof). , vraća broj bajtova zauzetih u memoriji. Primjer:
   sizeof(int) //vrati 4
   sizeof(char) //rezultat 1
   sizeof(double) // vraća 8