Këshilla për ndërtimin dhe rinovimin

Karakteri i tipit të plotë zë 1 bajt (8 bit) në memorie dhe ju lejon të shprehni 2^8 vlera = 256 në binar. Lloji char mund të përmbajë edhe pozitive dhe vlerat negative. Gama e vlerave është nga -128 në 127.

uchar

Lloji i numrit të plotë uchar gjithashtu merr 1 bajt në memorie, si lloji char, por ndryshe nga ai, uchar është menduar vetëm për vlera pozitive. Vlera minimale është zero, vlera maksimaleështë e barabartë me 255. Shkronja e parë u në emrin e tipit uchar është shkurtim i panënshkruar.

i shkurtër

Lloji i plotë i shkurtër ka një madhësi prej 2 byte (16 bit) dhe, në përputhje me rrethanat, ju lejon të shprehni një grup vlerash të barabarta me 2 me fuqinë 16: 2^16 = 65,536 e nënshkruar dhe përmban vlera pozitive dhe negative, vlerat e diapazonit janë midis -32,768 dhe 32,767.

i shkurtër

Lloji i shkurtër i panënshkruar është ushort, i cili është gjithashtu 2 bajt në madhësi. Vlera minimale është 0, vlera maksimale është 65,535.

ndër

Lloji i plotë int është 4 bajt (32 bit) në madhësi. Vlera minimale është -2,147,483,648, vlera maksimale është 2,147,483,647.

unint

Lloji i plotë i panënshkruar uint zë 4 bajt memorie dhe ju lejon të shprehni vlerat e numrave të plotë nga 0 në 4,294,967,295.

gjatë

Lloji i plotë i gjatë është 8 bajt (64 bit) në madhësi. Vlera minimale është -9,223,372,036,854,775,808, vlera maksimale është 9,223,372,036,854,775,807.

gjatë

Lloji i plotë ulong gjithashtu merr 8 bajt dhe mund të ruajë vlera nga 0 në 18,446,744,073,709,551,615.

Shembuj:

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

Për shkak se llojet e numrave të plotë të panënshkruar nuk janë krijuar për të ruajtur vlera negative, përpjekja për të vendosur një vlerë negative mund të ketë pasoja të papritura. Një skenar i pafajshëm si ky do të çojë në një lak të pafund:

Mënyra e duhur do të ishte:

Rezultati:

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
...

Llojet e të dhënave

Llojet e të dhënave janë veçanërisht të rëndësishme në C# sepse është një gjuhë e shtypur fort. Kjo do të thotë që të gjitha operacionet i nënshtrohen kontrollit të rreptë të tipit nga përpiluesi dhe operacionet e paligjshme nuk përpilohen. Prandaj, kontrolli i rreptë i tipit eliminon gabimet dhe rrit besueshmërinë e programeve. Për të zbatuar kontrollin e tipit, të gjitha variablat, shprehjet dhe vlerat duhet të jenë të një lloji specifik. Nuk ka fare gjë të tillë si një variabël "pa tip" në këtë gjuhë programimi. Për më tepër, lloji i një vlere përcakton operacionet që mund të kryhen në të. Një operacion që është i ligjshëm për një lloj të dhënash mund të mos jetë i vlefshëm për një tjetër.

Ekzistojnë dy kategori të përgjithshme të llojeve të të dhënave të integruara në C#: llojet e vlerave Dhe llojet e referencës. Ato ndryshojnë në përmbajtjen e ndryshores. Konceptualisht, ndryshimi midis të dyve është se një lloj vlere ruan të dhënat drejtpërdrejt, ndërsa një lloj reference ruan një referencë për një vlerë.

Këto lloje ruhen në vende të ndryshme memorie: llojet e vlerave ruhen në një zonë të njohur si pirg, dhe llojet e referencës ruhen në një zonë të quajtur grumbulli i menaxhuar.

Le t'i hedhim një sy llojet e vlerave.

Llojet e numrave të plotë

C# përcakton nëntë lloje të numrave të plotë: char, byte, sbyte, i shkurtër, ushort, int, uint, i gjatë dhe i gjatë. Por tipi char përdoret kryesisht për të përfaqësuar personazhet dhe për këtë arsye trajtohet veçmas. Tetë llojet e mbetura të numrave të plotë janë për llogaritjet numerike. Më poshtë janë diapazoni i tyre i numrave dhe thellësia e bitit:

Llojet e numrave të plotë C#
Lloji Lloji CTS Madhësia e bitit Gama
bajt Sistemi.Bajt 8 0:255
sbyte Sistemi.SByte 8 -128:127
i shkurtër Sistemi.Int16 16 -32768: 32767
i shkurtër Sistemi.UIint16 16 0: 65535
ndër Sistemi.Int32 32 -2147483648: 2147483647
unint Sistemi.UIint32 32 0: 4294967295
gjatë Sistemi.Int64 64 -9223372036854775808: 9223372036854775807
gjatë Sistemi.UIint64 64 0: 18446744073709551615

Siç tregon tabela e mësipërme, C# përcakton variantet e nënshkruara dhe të panënshkruara të llojeve të ndryshme të numrave të plotë. Llojet e numrave të plotë me shenjë ndryshojnë nga homologët e tyre të panënshkruar në mënyrën se si interpretojnë pjesën më të rëndësishme të numrit të plotë. Kështu, nëse një program specifikon një vlerë të plotë të nënshkruar, përpiluesi C# do të gjenerojë kodin që përdor bitin më të rëndësishëm të numrit të plotë si flamurin e shenjës. Një numër konsiderohet pozitiv nëse flamuri i shenjës është 0, dhe negativ nëse është 1.

Numrat negativë përfaqësohen pothuajse gjithmonë me metodën e plotësimit të të dyve, ku të gjitha shifrat binare të numrit negativ fillimisht përmbysen dhe më pas atij numri i shtohet 1.

Ndoshta lloji më i zakonshëm i numrit të plotë në programim është lloji int. Variablat e tipit int përdoren shpesh për kontrollin e lakut, indeksimin e vargjeve dhe llogaritjet matematikore. qëllimi i përgjithshëm. Kur keni nevojë për një vlerë të plotë me një gamë më të madhe paraqitjesh sesa lloji int, ekzistojnë një sërë llojesh të tjerë numrash të plotë të disponueshëm për këtë qëllim.

Pra, nëse vlera duhet të ruhet pa një shenjë, atëherë për të mund të zgjidhni lloji uint, për vlera të mëdha të nënshkruara - lloji i gjatë, dhe për vlera të mëdha të panënshkruara - shkruani gjatë. Si shembull, më poshtë është një program që llogarit distancën nga Toka në Diell në centimetra. Për të ruajtur kaq shumë me rëndësi të madhe ai përdor një variabël të tipit long:

Përdorimi i Sistemit; duke përdorur System.Collections.Generic; duke përdorur System.Linq; duke përdorur System.Text; namespace ConsoleApplication1 ( klasa Programi ( static void Main (string args) ( rezultat i gjatë; konst i gjatë km = 149800000; // distanca në km. rezultat = km * 1000 * 100; Console.WriteLine(rezultat); Console.ReadLine(); ) ))

Të gjithë variablave me numra të plotë mund t'u caktohen vlera në shënime dhjetore ose heksadecimal. Në rastin e fundit, kërkohet një prefiks 0x:

Gjatë x = 0x12ab;

Nëse ka ndonjë pasiguri nëse një vlerë e plotë është e tipit int, uint, e gjatë ose ulong, atëherë default int pranohet. Për të specifikuar në mënyrë eksplicite se çfarë lloji tjetër të numrit të plotë duhet të ketë një vlerë, karakteret e mëposhtme mund t'i shtohen një numri:

Uint UI = 1234U; e gjatë l = 1234L; ulong ul = 1234UL;

U dhe L mund të shkruhen gjithashtu me shkronja të vogla, megjithëse një L e vogël mund të ngatërrohet lehtësisht vizualisht me numrin 1 (një).

Llojet e pikave lundruese

Llojet me pikë lundruese ju lejojnë të përfaqësoni numrat me një pjesë thyesore. Ekzistojnë dy lloje të llojeve të të dhënave me pikë lundruese në C#: noton Dhe dyfishtë. Ato përfaqësojnë vlera numerike në saktësi të vetme dhe të dyfishtë, respektivisht. Kështu, gjerësia e tipit float është 32 bit, që përafërsisht korrespondon me diapazonin e paraqitjes së numrave nga 5E-45 deri në 3.4E+38. Dhe gjerësia e tipit të dyfishtë është 64 bit, që përafërsisht korrespondon me diapazonin e paraqitjes së numrave nga 5E-324 në 1.7E+308.

Lloji i të dhënave float është menduar për vlera më të vogla me pikë lundruese që kërkojnë më pak saktësi. Lloji i të dhënave të dyfishta është më i madh se float dhe ofron një shkallë më të lartë saktësie (15 bit).

Nëse një vlerë jo e plotë është e koduar në kodin burimor (për shembull, 12.3), atëherë përpiluesi zakonisht supozon se synohet një vlerë e tipit double. Nëse vlera duhet të specifikohet si float, do t'ju duhet t'i bashkëngjitni karakterin F (ose f):

Float f = 12.3F;

Lloji i të dhënave dhjetore

Një tip dhjetor është dhënë gjithashtu për të përfaqësuar numrat me pikë lundruese me saktësi të lartë. dhjetore, i cili synohet të përdoret në llogaritjet financiare. Ky lloj ka një gjerësi prej 128 bit për të përfaqësuar vlerat numerike që variojnë nga 1E-28 në 7.9E+28. Ju ndoshta jeni të vetëdijshëm se aritmetika e rregullt me ​​pikë lundruese është e prirur ndaj gabimeve të rrumbullakosjes dhjetore. Këto gabime eliminohen duke përdorur llojin dhjetor, i cili ju lejon të përfaqësoni numrat në 28 (dhe nganjëherë 29) numra dhjetorë. Për shkak se ky lloj i të dhënave mund të përfaqësojë vlera dhjetore pa gabime rrumbullakimi, është veçanërisht i dobishëm për llogaritjet financiare:

Përdorimi i Sistemit; duke përdorur System.Collections.Generic; duke përdorur System.Linq; duke përdorur System.Text; namespace ConsoleApplication1 ( Programi i klasës ( static void Main(string args) ( // *** Llogaritja e kostos së një investimi me *** // *** normë fikse kthimi*** para dhjetore, përqindje; int i; konst byte vjet = 15 ;

Rezultati i këtij programi do të jetë:

Simbolet

Në C#, karakteret përfaqësohen jo në kodin 8-bit, si në shumë gjuhë të tjera programimi si C++, por në kodin 16-bit, të quajtur Unicode. Grupi i karaktereve të Unicode është aq i gjerë sa mbulon personazhe nga pothuajse çdo gjuhë natyrore në botë. Ndërsa shumë gjuhë natyrore, duke përfshirë anglishten, frëngjishten dhe gjermanishten, kanë alfabete relativisht të vogla, disa gjuhë të tjera, si kinezishtja, përdorin grupe mjaft të mëdha karakteresh që nuk mund të përfaqësohen nga një kod 8-bit. Për të kapërcyer këtë kufizim, C# përcakton lloji char, i cili përfaqëson vlera 16-bitësh të panënshkruara që variojnë nga 0 në 65,535 Megjithatë, grupi standard i karaktereve 8-bitësh ASCII është një nëngrup i Unicode që varion nga 0 në 127. Prandaj, karakteret ASCII janë ende të vlefshme në C#.

Në gjuhën C, ekziston një dallim midis koncepteve të "llopit të të dhënave" dhe "modifikuesit të tipit". Lloji i të dhënave është numër i plotë dhe modifikuesi është i nënshkruar ose i panënshkruar. Një numër i plotë i nënshkruar do të ketë vlera pozitive dhe negative, ndërsa një numër i plotë i panënshkruar do të ketë vetëm vlera pozitive. Ekzistojnë pesë lloje themelore në gjuhën C.

  • char – personazh.
  • Një ndryshore e tipit char ka një madhësi prej 1 bajt, vlerat e saj janë karaktere të ndryshme nga tabela e kodeve, për shembull: 'f', ':', 'j' (kur shkruhen në program, ato janë të mbyllura në një citate).

  • int – e tërë.
  • Madhësia e një variabli të tipit int nuk është përcaktuar në standardin e gjuhës C. Në shumicën e sistemeve të programimit, madhësia e një ndryshoreje int korrespondon me madhësinë e një fjale të tërë makine. Për shembull, në përpiluesit për procesorë 16-bitësh, një variabël int ka një madhësi prej 2 bajt. Në këtë rast, vlerat e nënshkruara të kësaj ndryshore mund të shtrihen në intervalin nga -32768 në 32767.

  • noton – real.
  • Fjala kyçe float ju lejon të përcaktoni variabla të llojit real. Vlerat e tyre kanë një pjesë të pjesshme të ndarë me një pikë, për shembull: -5.6, 31.28, etj. Numrat real mund të shkruhen edhe në formë me pikë lundruese, për shembull: -1.09e+4. Numri para simbolit "e" quhet mantisa, dhe pas "e" quhet eksponent. Një variabël i tipit float zë 32 bit në memorie. Mund të marrë vlera në rangun nga 3.4e-38 në 3.4e+38.

  • double – double precision real;
  • Fjala kyçe e dyfishtë ju lejon të përcaktoni një ndryshore reale me saktësi të dyfishtë. Ajo merr dy herë më shumë hapësirë ​​memorie sesa një variabël float. Një ndryshore e tipit të dyfishtë mund të marrë vlera në rangun nga 1.7e-308 në 1.7e+308.

  • i pavlefshëm - pa vlerë.
  • Fjala kyçe void përdoret për të neutralizuar vlerën e një objekti, për shembull, për të deklaruar një funksion që nuk kthen asnjë vlerë.

Llojet e ndryshueshme:

Programet funksionojnë me të dhëna të ndryshme, të cilat mund të jenë të thjeshta ose të strukturuara. Të dhënat e thjeshta janë numrat e plotë dhe realë, simbolet dhe treguesit (adresat e objekteve në memorie). Numrat e plotë nuk kanë një pjesë thyesore, por numrat realë kanë. Të dhënat e strukturuara janë vargje dhe struktura; ato do të diskutohen më poshtë.

Një variabël është një qelizë në kujtesën e kompjuterit që ka një emër dhe ruan disa vlera. Vlera e një ndryshoreje mund të ndryshojë gjatë ekzekutimit të programit. Kur një vlerë e re shkruhet në një qelizë, ajo e vjetra fshihet.

Është një stil i mirë për t'i emërtuar variablat me kuptim. Emri i ndryshores mund të përmbajë nga një deri në 32 karaktere. Lejohet përdorimi i shkronjave të vogla dhe shkronjat e mëdha, numrat dhe një nënvizim, i cili konsiderohet një shkronjë në C. Karakteri i parë duhet të jetë një shkronjë. Emri i ndryshores nuk mund të përputhet me fjalët e rezervuara.

Lloji char

char është lloji më ekonomik. Lloji char mund të jetë i nënshkruar ose i panënshkruar. Shënohet si "char i nënshkruar" (lloj i nënshkruar) dhe "char i panënshkruar" (lloj i panënshkruar). Lloji i nënshkruar mund të ruajë vlera në intervalin -128 deri +127. E panënshkruar – nga 0 në 255. 1 bajt memorie (8 bit) ndahet për një variabël char.

Fjalët kyçe të nënshkruara dhe të panënshkuara tregojnë se si interpretohet biti zero i ndryshores së deklaruar, d.m.th., nëse është specifikuar fjala kyçe e panënshkruar, atëherë biti zero interpretohet si pjesë e një numri, përndryshe biti zero interpretohet si i nënshkruar.

Shkruani int

Vlera e plotë int mund të jetë e shkurtër ose e gjatë. Fjala kyçe e shkurtër vendoset pas fjalëve kyçe të nënshkruara ose të panënshkruara. Pra, ka lloje: int i shkurtër i nënshkruar, i shkurtër int i panënshkruar, i gjatë int i nënshkruar, i gjatë i panënshkruar.

Një variabël i tipit signed short int (numër i plotë i shkurtër i nënshkruar) mund të marrë vlera nga -32768 në +32767, int i shkurtër i panënshkruar (numër i plotë i shkurtër i panënshkruar) - nga 0 në 65535. Secilës prej tyre i ndahen saktësisht dy bajt memorie (16 bit).

Kur deklaroni një variabël të tipit signed short int, fjalë kyçe të nënshkruara dhe të shkurtra mund të hiqen, dhe lloji i tillë variabli mund të deklarohet thjesht int. Është gjithashtu e mundur të deklarohet ky lloj me një fjalë kyçe, të shkurtër.

Një variabël i shkurtër int i panënshkruar mund të deklarohet si int i panënshkruar ose i shkurtër i panënshkruar.

Për çdo vlerë të gjatë int të nënshkruar ose të gjatë int të panënshkruar, ndahen 4 bajt memorie (32 bit). Vlerat e variablave të këtij lloji mund të jenë në intervalet nga -2147483648 në 2147483647 dhe nga 0 në 4294967295, përkatësisht.

Ekzistojnë edhe variabla të tipit long long int, për të cilat ndahen 8 bajt memorie (64 bit). Ato mund të jenë të nënshkruara ose të panënshkruara. Për një lloj të nënshkruar, diapazoni i vlerave është nga -9223372036854775808 deri në 9223372036854775807, për një lloj të panënshkruar - nga 0 në 184467440737095551615. Një fjalë e deklaruar e nënshkruar nga dy mund të jetë gjithashtu e gjatë.

Lloji Gama Gama hex Madhësia
karakter i panënshkruar 0 … 255 0x00...0xFF 8 bit
të nënshkruar char
ose thjesht
karakter
-128 … 127 -0x80…0x7F 8 bit
i panënshkruar i shkurtër int
ose thjesht
i panënshkruar int ose e shkurtër e panënshkruar
0 … 65535 0x0000…0xFFFF 16 bit
nënshkruar shkurt int ose nënshkruar int
ose thjesht
i shkurtër ose ndër
-32768 … 32767 0x8000…0x7FFF 16 bit
i panënshkruar gjatë int
ose thjesht
i panënshkruar gjatë
0 … 4294967295 0x00000000 … 0xFFFFFFFF 32 bit
nënshkruar gjatë
ose thjesht
gjatë
-2147483648 … 2147483647 0x80000000 … 0x7FFFFFFF 32 bit
e panënshkruar gjatë e gjatë 0 … 18446744073709551615 0x00000000000000000 … 0xFFFFFFFFFFFFFFFFFF 64 bit
firmosur gjatë
ose thjesht
e gjatë e gjatë
-9223372036854775808 … 9223372036854775807 0x80000000000000000 … 0x7FFFFFFFFFFFFFFFF 64 bit

Deklarimi i variablave

Variablat deklarohen në një deklaratë deklarimi. Një deklaratë deklarimi përbëhet nga një specifikim tipi dhe një listë e ndarë me presje të emrave të variablave. Duhet të ketë një pikëpresje në fund.

[modifikuesit] identifikuesi i llojit_specifikues [, identifikuesi] ...

Modifikuesit – fjalë kyçe të nënshkruara, të panënshkruara, të shkurtra, të gjata.
Një specifikues tipi është një fjalë kyçe char ose int që specifikon llojin e ndryshores që deklarohet.
Identifikuesi është emri i ndryshores.

Char x;

int a, b, c;

i panënshkruar i gjatë i gjatë y;

Kur deklarohet, një variabël mund të inicializohet, domethënë t'i caktohet një vlerë fillestare.

Int x = 100;

Kur deklarohet, ndryshorja x do të përmbajë menjëherë numrin 100. Është më mirë të deklarohen variablat e inicializuar në rreshta të veçantë.

Përditësimi i fundit: 13.11.2017

    Ashtu si shumë gjuhë programimi, C# ka sistemin e vet të tipit të të dhënave që përdoret për të krijuar variabla. Një lloj i të dhënave përcakton paraqitjen e brendshme të të dhënave, grupin e vlerave që mund të marrë një objekt dhe veprimet e vlefshme që mund të kryhen në objekt.

    Gjuha C# ka llojet e mëposhtme primitive të të dhënave:

    bool : ruan vlerën true ose false (literale boolean). Përfaqësohet nga lloji i sistemit System.Boolean

    Bool gjallë = e vërtetë; bool është i vdekur = fals;

    byte: ruan një numër të plotë nga 0 në 255 dhe zë 1 bajt. Përfaqësohet nga lloji i sistemit System.Byte

    Bit bit1 = 1; byte bit2 = 102;

    sbyte: ruan një numër të plotë nga -128 në 127 dhe zë 1 bajt. Përfaqësohet nga lloji i sistemit System.SByte

    Sbyte bit1 = -101; sbyte bit2 = 102;

    ushort: ruan një numër të plotë nga 0 në 65535 dhe merr 2 bajt. Përfaqësohet nga lloji i sistemit System.UInt16

    Short n1 = 1; shkurt n2 = 102;

    int: ruan një numër të plotë nga -2147483648 në 2147483647 dhe zë 4 bajt. Përfaqësohet nga lloji i sistemit System.Int32. Të gjitha literalet e numrave të plotë përfaqësojnë vlerat int si parazgjedhje:

    Int a = 10; int b = 0b101; // forma binare b =5 int c = 0xFF; // Forma heksadecimal c = 255

    uint: ruan një numër të plotë nga 0 në 4294967295 dhe zë 4 bajt. Përfaqësohet nga lloji i sistemit System.UInt32

    Njësia a = 10; njësia b = 0b101; njësia c = 0xFF;

    long : ruan një numër të plotë nga –9,223,372,036,854,775,808 deri në 9,223,372,036,854,775,807 dhe zë 8 byte. Përfaqësohet nga lloji i sistemit System.Int64

    Gjatë a = -10; gjatë b = 0b101; e gjatë c = 0xFF;

    ulong: ruan një numër të plotë nga 0 në 18,446,744,073,709,551,615 dhe merr 8 byte. Përfaqësohet nga lloji i sistemit System.UInt64

    Gjatë a = 10; gjatësi b = 0b101; gjatë c = 0xFF;

    float: ruan një numër me pikë lundruese nga -3.4*10 38 në 3.4*10 38 dhe zë 4 bajt. Përfaqësohet nga lloji i sistemit System.Single

    double : ruan një numër me pikë lundruese nga ±5.0*10 -324 në ±1.7*10 308 dhe zë 8 bajt. Përfaqësohet nga lloji i sistemit System.Double

    dhjetore: ruan një numër thyese dhjetore. Nëse përdoret pa një pikë dhjetore, ai ka një vlerë nga ±1.0*10 -28 në ±7.9228*10 28, mund të ruajë 28 shifra dhjetore dhe zë 16 bajt. Përfaqësohet nga lloji i sistemit System.Decimal

    char: ruan një karakter të vetëm në Unicode dhe zë 2 bajt. Përfaqësohet nga lloji i sistemit System.Char. Literalet e karaktereve korrespondojnë me këtë lloj:

    Char a = "A"; char b = "\x5A"; char c = "\u0420";

    string: ruan një grup karakteresh Unicode. Përfaqësohet nga lloji i sistemit System.String. Literalet e karaktereve korrespondojnë me këtë lloj.

    String hello = "Përshëndetje"; varg fjalë = "botë";

    objekt: Mund të ruajë një vlerë të çdo lloji të të dhënave dhe zë 4 bajt në një platformë 32-bit dhe 8 bajt në një platformë 64-bit. Përfaqësohet nga lloji i sistemit System.Object, i cili është lloji bazë për të gjitha llojet dhe klasat e tjera .NET.

    Objekti a = 22; objekti b = 3,14; objekti c = "kodi i përshëndetjes";

Për shembull, le të përcaktojmë disa variabla lloje të ndryshme dhe printoni vlerat e tyre në tastierë:

Përdorimi i Sistemit; namespace HelloApp ( class Program ( static void Main(string args) ( emri i vargut = "Tom"; int age = 33; bool isEmployed = false; peshë e dyfishtë = 78.65; Console.WriteLine ($"Emri: (emri)"); Console.WriteLine($"Mosha: (mosha)";

Për të nxjerrë të dhëna në tastierë, këtu përdoret interpolimi: një shenjë $ vendoset përpara rreshtit dhe pas kësaj mund të futim vlera të ndryshueshme në rresht në kllapa kaçurrelë. Dalja e konsolës së programit:

Emri: Tom Mosha: 33 Pesha: 78.65 Punimet: E rreme

Përdorimi i prapashtesave

Kur caktoni vlera, duhet të keni parasysh hollësinë e mëposhtme: të gjitha literalet reale trajtohen si vlera të tipit të dyfishtë. Dhe për të treguar se një numër thyesor përfaqëson një lloj float ose një tip dhjetor, duhet të shtoni një prapashtesë në fjalëpërfjalisht: F/f për float dhe M/m për dhjetore.

Në mënyrë të ngjashme, të gjitha literalet e numrave të plotë trajtohen si vlera int. Për të treguar qartë se një literal i plotë përfaqëson një vlerë të tipit uint, përdorni prapashtesën U/u, për tipin long përdorni prapashtesën L/l dhe për tipin ulong përdorni prapashtesën UL/ul:

Njësia a = 10U; i gjatë b = 20L; gjatë c=30UL;

Përdorimi i llojeve të sistemit

Më lart, kur renditen të gjitha llojet bazë të të dhënave, lloji i sistemit u përmend për secilin. Sepse emri i një lloji të integruar është në thelb një stenografi për një lloj sistemi. Për shembull, variablat e mëposhtëm do të jenë ekuivalent në lloj:

Int a = 4; Sistemi.Int32 b = 4;

Shkrimi i nënkuptuar

Më parë, ne specifikuam në mënyrë eksplicite llojin e variablave, për shembull, int x; . Dhe përpiluesi, kur u nis, e dinte tashmë se x ruan një vlerë të plotë.

Sidoqoftë, ne mund të përdorim gjithashtu modelin e shtypjes së nënkuptuar:

Var hello = "Ferri në botë"; var c = 20; Console.WriteLine(c.GetType().ToString()); Console.WriteLine(hello.GetType().ToString());

Për shtypjen e nënkuptuar, fjala kyçe var përdoret në vend të emrit të llojit të të dhënave. Më pas, gjatë përpilimit, vetë përpiluesi konstaton llojin e të dhënave bazuar në vlerën e caktuar. Shembulli i mësipërm përdori shprehjen Console.WriteLine(c.GetType().ToString()); , e cila na lejon të zbulojmë llojin e konkluduar të ndryshores c. Meqenëse si parazgjedhje të gjitha vlerat e numrave të plotë trajtohen si vlera int, ndryshorja c do të përfundojë të jetë e tipit int ose System.Int32

Këto ndryshore janë të ngjashme me ato të zakonshme, por ato kanë disa kufizime.

Së pari, ne nuk mund të deklarojmë fillimisht një variabël të shtypur në mënyrë implicite dhe pastaj ta inicializojmë atë:

// ky kod funksionon në një; a = 20; // ky kod nuk funksionon var c; c= 20;

Së dyti, ne nuk mund të specifikojmë null si vlerën e një ndryshoreje të shtypur në mënyrë implicite:

// ky kod nuk funksionon var c=null;

Meqenëse vlera është null, përpiluesi nuk do të jetë në gjendje të konkludojë llojin e të dhënave.

dyshe ose dhjetore

Nga lista e mësipërme e llojeve të të dhënave, është e qartë se nëse duam të përdorim numra deri në 256 në një program, atëherë mund të përdorim variabla të tipit bajt për t'i ruajtur ato. Kur përdorim vlera të mëdha, mund të marrim tipin short, int, long. E njëjta gjë vlen edhe për numrat thyesorë - për numrat e zakonshëm thyesorë mund të merrni tipin float, për numrat thyesorë shumë të mëdhenj - llojin e dyfishtë. Lloji dhjetor qëndron i ndarë këtu në kuptimin që pavarësisht kapacitetit të tij më të madh të biteve në krahasim me tipin e dyfishtë, tipi i dyfishtë mund të ruajë vlerë më të lartë. Megjithatë, një vlerë dhjetore mund të përmbajë deri në 28 shifra dhjetore, ndërsa një vlerë e dyfishtë mund të përmbajë 15-16 shifra dhjetore.

Dhjetorja përdoret më shpesh në llogaritjet financiare, ndërsa dyfishi përdoret më shpesh në veprimet matematikore. Dallimet e përgjithshme midis këtyre dy llojeve mund të përmblidhen në tabelën e mëposhtme.

Kjo fletë mashtrimi jep informacion në lidhje me llojet kryesore të të dhënave të gjuhës së programimit C++ dhe veçoritë e zbatimit të tyre. Gjithashtu, në fund të regjistrimit ka një tabelë me diapazonin e vlerave të këtyre llojeve.

Koncepti i llojit të të dhënave

Qëllimi kryesor i çdo programi është përpunimi i të dhënave. Të dhënat lloje të ndryshme ruhen dhe përpunohen ndryshe. Në çdo gjuhë algoritmike, çdo konstante, variabël, shprehje ose funksion duhet të ketë një lloj specifik.

Lloji i të dhënave përcakton:

  • paraqitje e brendshme e të dhënave në memorien e kompjuterit;
  • grupi i vlerave që mund të marrin sasitë e këtij lloji;
  • operacionet dhe funksionet që mund të zbatohen për sasitë e këtij lloji.

Bazuar në këto karakteristika, programuesi zgjedh llojin e çdo sasie të përdorur në program për të përfaqësuar objektet reale. Një deklaratë e kërkuar e llojit lejon kompajlerin të kontrollojë për vlefshmërinë dizajne të ndryshme programet. Lloji i vlerës përcakton udhëzimet e makinës që do të përdoren për të përpunuar të dhënat.

Të gjitha llojet e gjuhës C++ mund të ndahen në bazë Dhe të përbëra . Gjuha C++ përcakton gjashtë kryesore llojet e të dhënave për të përfaqësuar vlera të plota, reale, karaktere dhe logjike. Bazuar në këto lloje, programuesi mund të vendosë një përshkrim të përbëra llojet. Këto përfshijnë vargje, numërime, funksione, struktura, referenca, tregues, bashkime dhe klasa.

Llojet bazë të të dhënave në C++

Llojet bazë (standarde) të të dhënave shpesh quhen aritmetike sepse ato mund të përdoren në veprime aritmetike. Për të përshkruar llojet kryesore, përcaktohen si më poshtë:

  1. int(int);
  2. char (char);
  3. wchar_t(widechar);
  4. bool (boolean);
  5. float (e vërtetë);
  6. dyfish (precizion i dyfishtë real).

Katër llojet e para quhen numër i plotë ( e tërë ), dy të fundit - Llojet me pikë lundruese . Kodi që gjeneron përpiluesi për trajtimin e vlerave të numrave të plotë është i ndryshëm nga kodi për vlerat me pikë lundruese.

Janë katër specifikues i tipit , duke sqaruar përfaqësimin e brendshëm dhe gamën e vlerave të llojeve standarde:

  • i shkurtër (i shkurtër);
  • e gjatë (e gjatë);
  • nënshkruar (nënshkruar);
  • e panënshkruar.

Lloji i numrit të plotë (int)

Madhësia e llojit int nuk përcaktohet nga standardi, por varet nga kompjuteri dhe kompajleri. Për një procesor 16-bit, 2 bajt ndahen për vlerat e këtij lloji, për një procesor 32-bit - 4 bajt.

Specifikuesi i shkurtër përpara emrit të tipit i tregon kompajlerit se 2 bajt duhet të ndahen për numrin, pavarësisht nga kapaciteti i bitit të procesorit. Specifikuesi i gjatë do të thotë që vlera e numrit të plotë do të zërë 4 bajt. Pra, në një kompjuter 16-bitësh ekuivalentët janë int dhe short int, dhe në një kompjuter 32-bit ekuivalentët janë int dhe long int.

Përfaqësimi i brendshëm vlerat e llojit të numrit të plotë - një numër i plotë në kodin binar. Kur përdorni specifikuesin e nënshkruar, biti më domethënës i numrit interpretohet si i nënshkruar (0 është një numër pozitiv, 1 është një numër negativ). Specifikuesi i panënshkruar lejon që të përfaqësohen vetëm numra pozitivë, pasi biti më domethënës trajtohet si pjesë e kodit të numrit. Kështu, diapazoni i vlerave të llojit int varet nga specifikuesit. Gama e vlerave të vlerave të tipit të plotë me specifikues të ndryshëm për kompjuterët e pajtueshëm me IBM PC jepen në tabelën "Sferat e vlerave të llojeve të thjeshta të të dhënave" në fund të hyrjes.

Si parazgjedhje, të gjitha llojet e numrave të plotë konsiderohen të nënshkruar, që do të thotë se specifikuesi i nënshkruar mund të hiqet.

Konstantet që gjenden në një program caktohen një lloj ose një tjetër në përputhje me llojin e tyre. Nëse për ndonjë arsye programuesi nuk është i kënaqur me këtë lloj, ai mund të tregojë në mënyrë eksplicite llojin e kërkuar duke përdorur prapashtesat L, l (e gjatë) dhe U, u (të panënshkruara). Për shembull, konstantja 32L do të jetë e tipit të gjatë dhe do të zërë 4 bajt. Ju mund të përdorni prapashtesat L dhe U në të njëjtën kohë, për shembull, 0x22UL ose 05Lu.

Shënim

Llojet short int, long int, signed int dhe unsigned int mund të shkurtohen përkatësisht në short, long, signed dhe unsigned.

Lloji i karakterit (char)

Vlera e një tipi karakteresh i ndahet një numri bajtësh të mjaftueshëm për të akomoduar çdo karakter nga grupi i karaktereve për një kompjuter të caktuar, i cili është ai që përcakton emrin e llojit. Zakonisht kjo është 1 bajt. Lloji char, si llojet e tjera të numrave të plotë, mund të jetë i nënshkruar ose i panënshkruar. Vlerat e nënshkruara mund të ruajnë vlera në intervalin -128 deri në 127. Duke përdorur specifikuesin e panënshkruar, vlerat mund të variojnë nga 0 në 255. Kjo është e mjaftueshme për të ruajtur çdo karakter në grupin e karaktereve ASCII me 256 karaktere. Vlerat e llojit char përdoren gjithashtu për të ruajtur numra të plotë që nuk i kalojnë kufijtë e diapazoneve të specifikuara.

Lloji i karakterit të zgjeruar (wchar_t)

Lloji wchar_t është krijuar për të punuar me një grup karakteresh për të cilët 1 bajt nuk mjafton për të koduar, për shembull, Unicode. Madhësia e këtij lloji varet nga zbatimi; si rregull i korrespondon tipit short. Konstantet e vargut të tipit wchar_t shkruhen me parashtesën L, për shembull, L»Gates».

Lloji Boolean (bool)

Vlerat Boolean mund të marrin vetëm vlerat "true" dhe "false", të cilat janë fjalë të rezervuara. Forma e brendshme e paraqitjes së vlerës false është 0 (zero). Çdo vlerë tjetër interpretohet si e vërtetë. Kur konvertohet në një tip numër të plotë, true ka vlerën 1.

Llojet e pikave lundruese (float, dyfishtë dhe dyshe të gjata)

Standardi C++ përcakton tre lloje të dhënash për ruajtjen e vlerave reale: float, double dhe long double.

Llojet e të dhënave me pikë lundruese ruhen ndryshe në memorien e kompjuterit sesa llojet e të dhënave të plota. Paraqitja e brendshme e një numri real përbëhet nga dy pjesë - mantisa dhe eksponenti. Në kompjuterët e pajtueshëm me IBM PC, vlerat float zënë 4 bajt, nga të cilat një shifër binare ndahet për shenjën e mantisës, 8 bit për eksponentin dhe 23 për mantisën. Mantisa është një numër më i madh se 1.0 por më i vogël se 2.0. Meqenëse shifra kryesore e mantisës është gjithmonë 1, ajo nuk ruhet.

Për vlerat e dyfishta që zënë 8 bajt, 11 dhe 52 bit ndahen për eksponentin dhe mantisën, përkatësisht. Gjatësia e mantisës përcakton saktësinë e numrit, dhe gjatësia e eksponentit përcakton diapazonin e tij. Siç mund ta shihni nga tabela në fund të hyrjes, me të njëjtin numër bajtësh të ndarë për vlerat float dhe int të gjata, diapazoni i vlerave të tyre të lejueshme ndryshojnë shumë. për shkak të formës së përfaqësimit të brendshëm.

Specifikuesi i gjatë përpara një emri të tipit të dyfishtë tregon se 10 bajt janë ndarë për vlerën e tij.

Konstantet me pikë lundruese janë të tipit të dyfishtë si parazgjedhje. Ju mund të specifikoni në mënyrë eksplicite llojin e një konstante duke përdorur prapashtesat F, f (float) dhe L, l (e gjatë). Për shembull, konstantja 2E+6L do të jetë e tipit long double, dhe konstantja 1.82f do të jetë e tipit float.

Për të shkruar programe që janë portative nëpër platforma, nuk mund të bëni supozime për madhësinë e llojit int. Për ta marrë atë, duhet të përdorni operacionin e madhësisë, rezultati i të cilit është madhësia e llojit në bajt. Për shembull, për sistemi operativ Madhësia e MS-DOS (int) do të rezultojë në 2, por për Windows 98 ose OS/2 rezultati do të jetë 4.

Standardi ANSI nuk specifikon diapazonin e vlerave për llojet bazë përcaktohen vetëm marrëdhëniet midis madhësive të tyre, për shembull:

madhësia (noton) ≤ slzeof (dyfish) ≤ madhësia (dyfish i gjatë)
madhësia e (char) ≤ slzeof (e shkurtër) ≤ madhësia e (int) ≤ madhësia e (e gjatë)

Shënim

Vlerat minimale dhe maksimale të lejuara për llojet e numrave të plotë varen nga zbatimi dhe jepen në skedarin e kokës (), karakteristikat e llojeve reale - në skedar (), si dhe në shabllonin e klasës numeric_limits

lloji void

Përveç atyre të listuara, llojet kryesore të gjuhës përfshijnë llojin e zbrazët, por grupi i vlerave të këtij lloji është bosh. Përdoret për të përcaktuar funksionet që nuk kthejnë një vlerë, për të specifikuar një listë të zbrazët të argumenteve të funksionit, si llojin bazë për treguesit, dhe në operacionet e hedhjes së tipit.

Gama e vlerave të llojeve të thjeshta të të dhënave në C++ për kompjuterët e pajtueshëm me IBM PC

Pyetje: Çfarë do të thotë termi kompjuter i pajtueshëm me IBM PC?
Përgjigje: Një kompjuter i pajtueshëm me IBM PC është një kompjuter që është arkitekturisht afër IBM PC, XT dhe AT. Kompjuterët e pajtueshëm me IBM PC janë ndërtuar mbi mikroprocesorë të përputhshëm me Intel 8086 (dhe, siç e dini, të gjithë ata të lëshuar më vonë Procesorët Intel janë plotësisht të përputhshme me 8086). Në fakt, këta janë pothuajse të gjithë kompjuterë modernë.

Lloje të ndryshme të llojeve të numrave të plotë dhe realë, të ndryshëm në diapazonin dhe saktësinë e paraqitjes së të dhënave, u prezantuan për t'i dhënë programuesit mundësinë për të përdorur në mënyrë më efektive aftësitë e pajisjeve specifike, pasi shpejtësia e llogaritjeve dhe sasia e kujtesës varen nga zgjedhja e llojit. Por një program i optimizuar për një lloj kompjuteri mund të mos jetë i lëvizshëm në platforma të tjera, kështu që në përgjithësi duhet të shmangni mbështetjen në karakteristikat specifike të llojeve të të dhënave.

Lloji Gama e vlerave Madhësia (bajt)
bool e vërtetë dhe e rreme 1
të nënshkruar char -128 … 127 1
karakter i panënshkruar 0 … 255 1
nënshkruar shkurt int -32 768 … 32 767 2
i panënshkruar i shkurtër int 0 … 65 535 2
nënshkruar gjatë int -2 147 483 648 … 2 147 483 647 4
i panënshkruar gjatë int 0 … 4 294 967 295 4
noton 3.4e-38 … 3.4e+38 4
dyfishtë 1.7e-308 … 1.7C+308 8
dyfish i gjatë 3.4e-4932 … 3.4e+4932 10

Për llojet reale, tabela tregon vlerat absolute të vlerave minimale dhe maksimale.



Nëse vëreni një gabim, zgjidhni një pjesë të tekstit dhe shtypni Ctrl+Enter
SHPËRNDAJE:
Këshilla për ndërtimin dhe rinovimin