Varijable u C ++
C ++ varijabla pruža nam imenovanu mogućnost pohrane. Omogućuje programeru da manipulira podacima prema potrebi. Svaka varijabla ima tip u C ++. Tip varijable pomaže odrediti veličinu i izgled memorijske karte varijable, raspon vrijednosti koji se mogu pohraniti u tu memoriju i skup operacija koje se na nju mogu primijeniti.
U ovom C ++ tutorialu naučit ćete:
- Varijable u C ++
- Osnovni tipovi varijabli u C ++
- Pravila deklariranja varijabli u C ++
- C ++ varijabilni tipovi podataka
- Naziv varijable ili identifikatori
- Const Kvalifikator u C ++
- Opseg varijabli u C ++
- Pretvorba tipa varijable
- Registriraj varijable
- Sekvence bijega
Osnovni tipovi varijabli u C ++
Evo osnovnih tipova C ++ varijabli:
Int:
Cijeli broj je numerički literal (povezan s brojevima) bez bilo kakvog razlomka ili eksponencijalnog dijela. Primjer. 120, -90 itd.
Dvostruko:
To je vrijednost dvostruke preciznosti s pomičnim zarezom. Primjer: 11.22, 2.345
Char:
Karakter znakova stvara se zatvaranjem jednog znaka unutar pojedinačnih navodnika. Na primjer: 'a', 'm', 'F', 'P', '}' itd.
Plutati:
Literala s pomičnom zarezom je numerička literala koja ima ili razlomljeni oblik ili eksponentni oblik. Na primjer: 1.3, 2.6
String Literals:
Znakovni niz je niz znakova koji su zatvoreni u dvostruke navodnike. Na primjer: "Kako ste?"
Bool:
Drži logičku vrijednost true ili false.
Pravila deklariranja varijabli u C ++
Evo nekoliko uobičajenih pravila za imenovanje varijable:
- Ime varijable C ++ može imati samo abecede, brojeve i donje crte.
- Ime varijable C ++ ne može započeti brojem.
- Imena varijabli ne bi trebala počinjati velikim slovom.
- Naziv varijable koji se koristi u C ++-u ne može biti ključna riječ. Na primjer, int je ključna riječ koja se koristi za označavanje cijelih brojeva.
- Naziv varijable C ++ može započeti donjom crtom. Međutim, to se ne smatra dobrom praksom.
C ++ varijabilni tipovi podataka
C ++ definira čitav niz primitivnih tipova
Tip void nema pridruženih vrijednosti i može se koristiti u samo nekoliko okolnosti. Najčešće je to vrsta povratka funkcija koje ne vraćaju vrijednost.
U aritmetički vrste uključuju znakova, brojeva, logičke vrijednosti i pomičnim zarezom brojeve. Aritmetički tip ako se dalje dijeli u 2 kategorije
- Tipovi s pomičnim zarezom . Plutajući (ili plutajući tip) predstavljaju decimalne brojeve. IEEE standard određuje minimalni broj značajnih znamenki. Većina kompajlera obično pruža veću preciznost od navedenog minimuma. Obično su plutajući brojevi predstavljeni sa 32 bita, parovi u 64 bita, a dugi parovi u 96 ili 128 bita.
- Integralni tipovi (koji uključuju znakove, cijele brojeve i logičke tipove). Booleova tip ima samo dvije vrste vrijednosti: true ili false. Postoji nekoliko vrsta znakova , od kojih većina postoji za potporu internacionalizaciji. Najosnovniji tip znaka je char. Char je iste veličine kao jedan strojni bajt, što znači jedan bajt.
U Integral vrste može potpisati ili nepotpisane.
Potpisani tip : Oni predstavljaju negativne ili pozitivne brojeve (uključujući nulu). U potpisanom tipu raspon mora biti ravnomjerno podijeljen između vrijednosti + ve i -ve. Dakle, 8-bitni potpisani char sadržavat će vrijednosti od -127 do 127.
Nepotpisani tip : U nepotpisanom tipu sve vrijednosti su> = 0. 8-bitni nepotpisani znak može sadržavati od 0 do 255 (obje uključuju).
Naziv varijable ili identifikatori
Identifikatori se mogu sastojati od nekih slova, znamenki i donjeg znaka ili neke njihove kombinacije. Dužina imena nije ograničena.
Identifikatori moraju
- započinju slovom ili podvlakom ('_').
- I razlikuju velika i mala slova; velika i mala slova razlikuju se:
// definira četiri različite int varijable
int guru99, gurU99, GuRu99, GURU99;
Jezik C ++ rezervirao je neka imena za svoju upotrebu.
Postoje mnoge prihvaćene konvencije za imenovanje varijabli u različitim programskim jezicima. Slijedom ovih konvencija može se poboljšati čitljivost programa.
- Identifikator bi trebao dati barem neke naznake njegovog značenja.
- Imena varijabli obično su mala-guru99, a ne Guru99 ili GURU99.
- Nastava koju definiramo obično započinje velikim slovom.
- Identifikatori koji sadrže više riječi trebali bi vizualno razlikovati svaku riječ. Na primjer, guru99_website, a ne guru99website.
Izjava i definicija varijable C ++
Deklaracija varijable čini ime programu poznato u opsegu u kojem je definirana. Primjer:
int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};
Const Kvalifikator u C ++
Pretpostavimo da postoji varijabla buffsize koja navodi broj ulaza koje treba uzeti od korisnika. Ovdje ne želimo mijenjati vrijednost buffsize tijekom programa. Želimo definirati varijablu čija vrijednost znamo da se ne bi smjela mijenjati.
U tom slučaju upotrijebite ključnu riječ const
const int bufSize = 512; // input buffer size
Ovo definira bufSize kao konstantu. Svaki pokušaj dodjeljivanja ili promjene bufSize daje pogrešku.
Ovdje ne možemo promijeniti vrijednost const objekta nakon što ga kreiramo, on mora biti obavezno deklariran i inicijaliziran. Inače kompajler baca pogrešku.
const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci
Opseg varijabli u C ++
Opseg je raspon programa u kojem varijabla ima značenje. Uglavnom se isti naziv može koristiti za pozivanje na različite entitete u različitim opsezima. Varijable su vidljive od točke na kojoj su deklarirane do kraja opsega u kojem se njihova deklaracija pojavljuje.
#includeint main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum < Ovaj program definira 3 imena, naime glavno, zbroj i val. Koristi naziv prostora imena std, zajedno s dva druga imena iz tog prostora imena-cout i endl.
- Naziv funkcije "main" definiran je izvan kovrčavih zagrada. Ime funkcije main-poput većine ostalih imena definiranih izvan funkcije-ima globalni opseg. Što znači da su jednom proglašena imena koja imaju globalni opseg dostupna u cijelom programu.
- Varijabla zbroja definirana je unutar opsega bloka koji je tijelo glavne funkcije. Može mu se pristupiti od točke deklaracije i kroz ostatak tijela glavne funkcije. Međutim, ne izvan nje. To znači da varijabla sum sadrži opseg bloka .
- Varijabla val definirana je u opsegu "for statement". Može se lako koristiti u toj izjavi, ali ne i drugdje u glavnoj funkciji. Ima lokalni opseg .
Ugniježđeni opseg
Opseg može sadržavati i druge dosege. Sadržani (ili ugniježđeni) opseg naziva se unutarnjim opsegom. Opseg koji sadrži sadrži vanjski opseg.
#includeusing namespace std;// Program for illustration purposes only: It is bad style for a function// to use a global variable and also define a local variable with the same nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;} Izlaz # 1 pojavljuje se prije lokalne definicije ponovne upotrebe. Dakle, ovaj izlaz
naredba je ona koja koristi ponovno upotrijebljeno ime definirano u globalnom opsegu. Ova izjava izlazi
42 0
Izlaz # 2 javlja se nakon lokalne definicije ponovne upotrebe. Sada je u opsegu. Stoga ovaj drugi izlazni izraz jednostavno koristi lokalni objekt koji se zove ponovno upotrijebljeni, a ne globalni i izlazi
0 0
Izlaz # 3 nadjačava zadana pravila opsega pomoću operatora opsega. Globalni opseg nema naziv. Dakle, kada operator opsega (: :) ima praznu lijevu stranu. To tumači kao zahtjev za dohvaćanjem imena s desne strane globalnog opsega. Dakle, izraz koristi globalnu ponovnu upotrebu i izlaze
42 0
Pretvorba tipa varijable
Varijabla jedne vrste može se pretvoriti u drugu. Poznata je pod nazivom "Pretvorba tipa". Pogledajmo pravila za pretvaranje različitih tipova varijabli C ++:
Dodjela non-bool varijabli bool daje false ako je vrijednost 0, a true inače.
bool b = 42; // b is trueDodjeljivanje bola jednom od ostalih aritmetičkih tipova daje 1 ako je bool istinit i 0 ako je bool lažan.
bool b = true;int i = b; // i has value 1Dodjeljivanje vrijednosti s pomičnom zarezom varijabli tipa int daje vrijednost koja je skraćena. Vrijednost koja se pohranjuje dio je ispred decimalne točke.
int i = 3.14; // i has value 3Dodjela vrijednosti int varijabli tipa float rezultira da frakcijski dio postane nula. Preciznost se obično gubi ako cijeli broj ima više bitova nego što plutajuća varijabla može primiti.
Int i=3;double pi = i; // pi has value 3.0Ako varijabli nepotpisanog tipa pokušamo dodijeliti vrijednost izvan opsega, rezultat je ostatak vrijednosti% (modulo)
Na primjer, 8-bitni nepotpisani tip char može sadržavati vrijednosti od 0 do 255, uključujući. Dodjeljivanje vrijednosti izvan ovog raspona rezultirat će da kompajler dodijeli ostatak te vrijednosti modulom 256. Prema tome, prema gornjoj logici, dodjeljivanje -1 8-bitnom nepotpisanom znaku daje tom objektu vrijednost 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255Ako objektu potpisanog tipa pokušamo dodijeliti vrijednost izvan dometa, rezultat je nepredvidljiv. Nije definirano. Čini se da program radi izvana, ili se može srušiti ili može proizvesti vrijednosti smeća.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefinedPrevoditelj primjenjuje te iste vrste pretvorbi kada koristimo vrijednost jednog tipa gdje se očekuje vrijednost drugog tipa.
int i = 42;if (i) // condition will evaluate as truei = 0;Ako je ova vrijednost = 0, tada je uvjet netačan; sve ostale (ne-nule) vrijednosti daju true. Prema istom konceptu, kada koristimo bool u aritmetičkom izrazu, njegova se vrijednost uvijek pretvara u 0 ili 1. Kao rezultat, upotreba bool-a u aritmetičkom izrazu obično je gotovo sigurno netočna.
Oprez: Ne miješajte potpisane i nepotpisane vrste
Izrazi koji kombiniraju potpisano i nepotpisano mogu dati iznenađujuće i pogrešne rezultate kada je potpisana vrijednost negativna. Kao što je gore spomenuto, potpisane vrijednosti automatski se pretvaraju u nepotpisane.
Na primjer, u aritmetičkom izrazu poput
x* yAko je x -1, a y 1, a ako su x i y int, tada je vrijednost, prema očekivanjima, -1.
Ako je x int, a y nepotpisani, tada vrijednost ovog izraza ovisi o tome koliko bitova ima cijeli broj na stroju za kompiliranje. Na našem stroju ovaj izraz daje 4294967295.
Registriraj varijable
Varijablama registra je brži pristup u usporedbi s memorijskim varijablama. Dakle, varijable koje se često koriste u programu C ++ mogu se staviti u registre pomoću ključne riječi register . Ključna riječ register govori prevoditelju da zadanu varijablu pohrani u registar. Izbornik je izbor hoće li ga staviti u registar ili ne. Općenito, sami prevoditelji rade razne optimizacije koje uključuju stavljanje nekih varijabli u registar. Ne postoji ograničenje broja registarskih varijabli u programu C ++. Ali prevoditelj možda neće pohraniti varijablu u registar. To je zato što je memorija registra vrlo ograničena i OS je najčešće koristi.
Definirati:
register int i;Komentari
Komentari su dijelovi koda koje je prevodilac ignorirao. Omogućuje programeru da bilježi u relevantna područja izvornog koda / programa. Komentari dolaze u blok obliku ili u jednom retku. Komentari programa objašnjenja su. Može se uključiti u C ++ kod koji pomaže svima koji čitaju njegov izvorni kod. Svi programski jezici dopuštaju neki oblik komentara. C ++ podržava komentare u jednom retku i u više redaka.
- Jednoredni komentari su oni koji započinju s // i nastavljaju se do kraja retka. Ako je posljednji znak u retku komentara \, komentar će se nastaviti u sljedećem retku.
- Višeredni komentari su oni koji počinju s / * i završavaju s / /.
/* This is a comment *//* C++ comments can also* span multiple lines*/Sekvence bijega
Neki znakovi, poput backspacea i kontrolnih znakova, nemaju vidljivu sliku. Takvi su znakovi poznati kao znakovi koji se ne mogu ispisati. Ostali znakovi (jednostruki i dvostruki navodnici, upitnik i nagnuta crta) imaju posebno značenje u mnogim programskim jezicima.
Naši programi ne mogu izravno koristiti nijedan od ovih znakova. Umjesto toga, možemo upotrijebiti izlaznu sekvencu da predstavimo takav char. Slijed bijega započinje obrnutom kosom crtom.
Programski jezik C ++ definira nekoliko sljedova:
Što to radi?
Lik
Nova linija
\ n
Okomita kartica
\ v
Povratna crta
\\
Povrat prtljage
\ r
Vodoravna kartica
\ t
Povratni prostor
\ b
Upitnik
\?
Ulaganje obrasca
\ f
Upozorenje (zvono)
\ a
Dvostruki navodnik
\ "
Jednostruki navodnik
\ '
Koristimo redoslijed bijega kao da je riječ o jednom znaku:
cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newlineTakođer možemo napisati generalizirane izlazne sekvence \ x nakon kojih slijedi jedna ili više heksadecimalnih znamenki. Ili koristimo \ iza kojeg slijede jedna, dvije ili tri oktalne znamenke. Općeniti izlazni slijed predstavlja numeričku vrijednost znaka. Nekoliko primjera (pod pretpostavkom latiničnog skupa znakova):
\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')Možemo koristiti unaprijed definirane izlazne sekvence, kao što koristimo bilo koji drugi znak.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newlineSažetak
- C ++ varijabla pruža nam imenovanu mogućnost pohrane.
- Vrste varijabli C ++: int, double, char, float, string, bool itd.
- Sadržaj (ili ugniježđeni) opseg naziva se unutarnjim opsegom, a sadržavajući opseg je vanjskim opsegom.
- Varijabla jedne vrste može se pretvoriti u drugu. Poznata je pod nazivom "Pretvorba tipa".
- Varijablama registra je brži pristup u usporedbi s memorijskim varijablama.
- Komentari su dijelovi koda koje je prevodilac ignorirao.
- Neki znakovi, poput backspacea i kontrolnih znakova, nemaju vidljivu sliku.