C++ Varijable i tipovi: Int, Char, Float, Double, String & Bool

Varijable u C++

A C++ varijabla nam daje sposobnost imenovane pohrane. Omoguฤ‡uje programeru da manipulira podacima prema potrebi. Svaka varijabla ima svoj tip C++. Vrsta varijable pomaลพe u odreฤ‘ivanju veliฤine i rasporeda memorijske mape varijable, raspona vrijednosti koje se mogu pohraniti unutar te memorije i skupa operacija koje se na nju mogu primijeniti.

Osnovni tipovi varijabli u C++

Evo osnovnih vrsta C++ varijable:

Int:

Cijeli broj je numeriฤki literal (povezan s brojevima) bez razlomka ili eksponencijalnog dijela. Primjer. 120, -90 itd.

Double:

To je vrijednost s pomiฤnim zarezom dvostruke preciznosti. Primjer: 11.22, 2.345

znak:

Znakovni literal se stvara zatvaranjem jednog znaka unutar jednostrukih navodnika. Na primjer: 'a', 'm', 'F', 'P', '}' itd.

Plutati:

Literal s pomiฤnim zarezom je numeriฤki literal koji ima oblik razlomka ili oblik eksponenta. Na primjer: 1.3, 2.6

String literali:

String literal je niz znakova unutar dvostrukih navodnika. Na primjer: "Kako si?"

Bool:

Sadrลพi Booleovu vrijednost true ili false.

Pravila deklariranja varijabli u C++

Evo nekih uobiฤajenih pravila za imenovanje varijable:

  • A C++ naziv varijable moลพe sadrลพavati samo slova, brojeve i podvlaku.
  • A C++ naziv varijable ne moลพe zapoฤeti brojem.
  • Imena varijabli ne smiju poฤinjati velikim slovom.
  • Naziv varijable koji se koristi u C++ ne moลพe biti kljuฤna rijeฤ. Na primjer, int je kljuฤna rijeฤ koja se koristi za oznaฤavanje cijelih brojeva.
  • A C++ naziv varijable moลพe zapoฤeti podvlakom. Meฤ‘utim, to se ne smatra dobrom praksom.

C++ Varijabilne vrste podataka

C++ definira cijeli skup primitivnih tipova

The poniลกtiti tip nema pridruลพene vrijednosti i moลพe se koristiti u samo nekoliko okolnosti. Najฤeลกฤ‡e je kao povratna vrsta funkcija koje ne vraฤ‡aju vrijednost.

The aritmetiฤke vrste ukljuฤuju znakove, cijele brojeve, Booleove vrijednosti i brojeve s pomiฤnim zarezom. Aritmetiฤki tip ako se dalje dijeli u 2 kategorije

  1. Tipovi s pomiฤnim zarezom. Pomiฤuฤ‡i (ili plutajuฤ‡i tip) predstavljaju decimalne brojeve. IEEE standard navodi minimalni broj znaฤajnih znamenki. Veฤ‡ina kompilatora obiฤno daje veฤ‡u preciznost od navedenog minimuma. Obiฤno su float-ovi predstavljeni s 32 bita, double s 64 bita, a long double s 96 ili 128 bita.
  2. Integralni tipovi (ลกto ukljuฤuje karakterne, cijele brojeve i Booleove tipove). The Booleova type ima samo dvije vrste vrijednosti: True ili False. Ima ih nekoliko ฤaฤ‘ vrste, od kojih veฤ‡ina postoji kako bi poduprla internacionalizaciju. Najosnovniji tip znakova je char. Znak je iste veliฤine kao jedan strojni bajt ลกto znaฤi jedan bajt.

The Integralni tipovi moลพe biti potpisan ili nepotpisan.

Potpisani tip: Predstavljaju negativne ili pozitivne brojeve (ukljuฤujuฤ‡i nulu). U tipu s predznakom, raspon mora biti ravnomjerno podijeljen izmeฤ‘u +ve i -ve vrijednosti. Stoga ฤ‡e 8-bitni znak s predznakom sadrลพavati vrijednosti od โ€“127 do 127.

Nepotpisani tip: U nepredznaฤenom tipu sve su vrijednosti >= 0. 8-bitni nepredznaฤeni char moลพe sadrลพavati 0 do 255 (oba ukljuฤujuฤ‡i).

C++ Varijabilne vrste podataka

Naziv varijable ili identifikatori

Identifikatori se mogu sastojati od nekoliko slova, znamenki i podvlake ili neke njihove kombinacije. Duljina imena nije ograniฤena.

Identifikatori moraju

  • poฤinju slovom ili podvlakom ('_').
  • I razlikuju velika i mala slova; razlikuju se velika i mala slova:

// definira ฤetiri razliฤite int varijable

int guru99, gurU99, GuRu99, GURU99;

The C++ jezik je rezervirao neke nazive za svoju upotrebu.

Naziv varijable ili identifikatori

Postoje mnoge prihvaฤ‡ene konvencije za imenovanje varijabli razliฤite programske jezike. Slijeฤ‘enje ovih konvencija moลพe poboljลกati ฤitljivost programa.

  • Identifikator bi trebao dati barem neku naznaku svog znaฤenja.
  • Imena varijabli obiฤno su mala slovaโ€”guru99, a ne Guru99 ili GURU99.
  • Klase koje definiramo obiฤno poฤinju velikim slovom.
  • Identifikatori koji sadrลพe viลกe rijeฤi trebali bi vizualno razlikovati svaku rijeฤ. Na primjer, guru99_website ne guru99website.

C++ Deklaracija i definicija varijable

Deklaracija varijable ฤini ime poznatim programu u opsegu u kojem je definirano. Primjer:

int a=5;
int b;
char c='A'; 
int a,b;
a=b=1000;
List initialization
int a(5);
int b{5};

Const Kvalifikator u C++

Pretpostavimo da postoji varijabla buffsize koja navodi broj unosa koje treba uzeti od korisnika. Ovdje ne ลพelimo mijenjati vrijednost buffsize kroz program. ลฝelimo definirati varijablu za ฤiju vrijednost znamo da se ne bi trebala mijenjati.

U tom sluฤaju koristite kljuฤnu rijeฤ const

const int bufSize = 512;    // input buffer size

Ovo definira bufSize kao konstantu. Svaki pokuลกaj dodjele ili promjene bufSize daje pogreลกku.

Ovdje ne moลพemo promijeniti vrijednost const objekta nakon ลกto ga stvorimo, on mora biti obvezno deklariran i inicijaliziran. U suprotnom prevodilac javlja pogreลกku.

const int i = get_size();  // ok: initialized at run time
const int j = 42;          // ok: initialized at compile time
const int k;               // error: k is uninitialized const
int 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 isto ime moลพe koristiti za oznaฤavanje razliฤitih entiteta unutar razliฤitih opsega. Varijable su vidljive od toฤke na kojoj su deklarirane do kraja opsega u kojem se pojavljuje njihova deklaracija.

#include <iostream>	
int main()	
{	
    int sum = 0;	
    // sum values from 1 through 10 inclusive	
    for (int val = 1; val <= 10; ++val)	
        sum += val;  // equivalent to sum = sum + val	
    cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;	
    return 0;	
}	 

Ovaj program definira 3 imena, naime, main, sum i val. Koristi ime prostora imena std, zajedno s dva druga imena iz tog prostora imena โ€” cout i endl.

  • Naziv funkcije "main" definiran je izvan vitiฤastih zagrada. Naziv funkcije mainโ€”poput veฤ‡ine drugih naziva definiranih izvan funkcijeโ€”ima globalni opseg. ล to znaฤi da jednom deklarirana imena koja se nalaze na globalni opseg dostupni su tijekom cijelog programa.
  • Zbroj varijable definiran je unutar opsega bloka koji je tijelo glavne funkcije. Moลพe mu se pristupiti s njegove toฤke deklaracije i kroz ostatak tijela glavne funkcije. Meฤ‘utim, ne izvan njega. To znaฤi da varijabla suma ima opseg bloka.
  • Varijabla val je definirana u opsegu "for izjave". 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 druge opsege. Sadrลพani (ili ugnijeลพฤ‘eni) opseg naziva se unutarnjim opsegom. Sadrลพi opseg je vanjski opseg.

#include <iostream>	
using 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 name	
int reused = 42;  // reused has global scope	
int main()	
{	
    int unique = 0; // unique has block scope	
    // output #1: uses global reused; prints 42 0	
    cout << reused << " " << unique << endl;	
    int reused = 0; // new, local object named reused hides global reused	
    // output #2: uses local reused; prints 0 0	
    cout << reused << " " << unique << endl;	
    // output #3: explicitly requests the global reused; prints 42 0	
    cout << ::reused << " " << unique << endl;	
    return 0;	
}	 

Izlaz #1 pojavljuje se prije lokalne definicije ponovno koriลกtenog. Dakle, ovaj izlaz

izjava je ona koja koristi ponovno koriลกteno ime koje je definirano u globalnom opsegu. Ova izjava izlazi

42 0

Izlaz #2 javlja se nakon lokalne definicije reused. Sada je u opsegu. Stoga ova druga izlazna izjava jednostavno koristi lokalni objekt pod nazivom reused umjesto globalnog i izlazi

0 0

Izlaz #3 nadjaฤava zadana pravila opsega pomoฤ‡u operator opsega. Globalni opseg nema naziv. Dakle, kada operator opsega(::) ima praznu lijevu stranu. To tumaฤi kao zahtjev za dohvaฤ‡anje imena na desnoj strani globalnog opsega. Dakle, izraz koristi globalne reused i izlaze

42 0

Pretvorba tipa varijable

Varijabla jednog tipa moลพe se pretvoriti u drugu. Poznato je kao "Konverzija tipa". Pogledajmo pravila za pretvaranje razliฤitih C++ vrste varijabli:

Dodjeljivanje ne-bool varijabli bool daje false ako je vrijednost 0 i true u suprotnom.

bool b = 42;            // b is true

Dodjeljivanje boola jednom od drugih 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 1

Dodjeljivanje vrijednosti s pomiฤnim zarezom varijabli tipa int daje vrijednost koja je skraฤ‡ena. Vrijednost koja se pohranjuje je dio prije decimalne toฤke.

int i = 3.14;               // i has value 3

Dodjeljivanje int vrijednosti varijabli tipa float rezultira time da razlomaฤki dio postaje 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.0

Ako pokuลกamo dodijeliti vrijednost izvan raspona varijabli nepredznaฤenog tipa, rezultat je ostatak vrijednosti %(modulo)

Na primjer, 8-bitni unsigned char tip moลพe sadrลพavati vrijednosti od 0 do 255, ukljuฤujuฤ‡i. Dodjeljivanje vrijednosti izvan ovog raspona rezultirat ฤ‡e dodjeljivanjem ostatka te vrijednosti od strane kompajlera modulo 256. Prema tome, prema gornjoj logici, dodjeljivanje โ€“1 8-bitnom nepredznaฤenom znaku daje tom objektu vrijednost 255.

unsigned char c = -1;   // assuming 8-bit chars, c has value 255

Ako objektu oznaฤenog tipa pokuลกamo dodijeliti vrijednost izvan raspona, rezultat je nepredvidiv. Nedefinirano je. Moลพe se ฤiniti da program izvana radi, ili se moลพe sruลกiti, ili moลพe proizvoditi neispravne vrijednosti.

signed char c2 = 256;   // assuming 8-bit chars, the value of c2 is undefined

Prevoditelj primjenjuje istu vrstu pretvorbe kada koristimo vrijednost jedne vrste gdje se oฤekuje vrijednost druge vrste.

int i = 42;
if (i) // condition will evaluate as true
i = 0; 

Ako je ova vrijednost = 0, tada je uvjet laลพan; sve druge vrijednosti (ne-nula) daju istinite. Po istom konceptu, kada koristimo bool u aritmetiฤkom izrazu, njegova se vrijednost uvijek pretvara u 0 ili 1. Kao rezultat toga, koriลกtenje boola u aritmetiฤkom izrazu obiฤno je gotovo sigurno netoฤno.

Oprez: ne mijeลกajte oznaฤene i neoznaฤene tipove

Izrazi koji mijeลกaju predznak i nepredznak mogu dati iznenaฤ‘ujuฤ‡e i pogreลกne rezultate kada je predznak negativan. Kao ลกto je gore objaลกnjeno, vrijednosti s predznakom automatski se pretvaraju u nepredznaฤene.

Na primjer, u aritmetiฤkom izrazu kao ลกto je

x* y

Ako je x -1 i y je 1, i ako su i x i y int, tada je vrijednost, kao ลกto se i oฤekivalo, -1.

Ako je x int, a y bez predznaka, tada vrijednost ovog izraza ovisi o tome koliko bitova cijeli broj ima na stroju za prevoฤ‘enje. Na naลกem stroju ovaj izraz daje 4294967295.

Registrirajte varijable

Varijablama registara se brลพe pristupa u usporedbi s varijablama memorije. Dakle, varijable koje se ฤesto koriste u a C++ program se moลพe staviti u registre pomoฤ‡u Registrirajte se kljuฤna rijeฤ. Kljuฤna rijeฤ register govori kompajleru da pohrani danu varijablu u registar. Odabir prevoditelja je hoฤ‡e li ga staviti u registar ili ne. Opฤ‡enito, prevoditelji sami rade razliฤite optimizacije koje ukljuฤuju stavljanje nekih varijabli u registar. Ne postoji ograniฤenje broja varijabli registra u a C++ program. Ali kompajler moลพda neฤ‡e pohraniti varijablu u registar. To je zato ลกto je memorija registara vrlo ograniฤena i najฤeลกฤ‡e je koristi OS.

Definirati:

register int i;

Komentari

Komentari su dijelovi koda koje kompajler ignorira. Omoguฤ‡uje programeru da pravi biljeลกke u relevantnim podruฤjima izvornog koda/programa. Komentari dolaze ili u obliku bloka ili u jednom retku. Programski komentari su objaลกnjenja. 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 i jednoredne i viลกeredne komentare.

  • Komentari u jednom retku su oni koji poฤinju s // i nastavljaju se do kraja retka. Ako je zadnji znak u retku komentara \ tada ฤ‡e se komentar nastaviti u sljedeฤ‡em retku.
  • Viลกeredni komentari su oni koji poฤinju sa /* i zavrลกavaju sa */.
/* This is a comment */
/* C++ comments can  also 
* span multiple lines 
*/

Escape sekvence

Neki znakovi, kao ลกto su povratni razmak i kontrolni znakovi, nemaju vidljivu sliku. Takvi su znakovi poznati kao znakovi koji se ne mogu ispisati. Ostali znakovi (jednostruki i dvostruki navodnici, upitnik i kosa crta) imaju posebno znaฤenje u mnogim programskim jezicima.

Naลกi programi ne mogu izravno koristiti nijedan od ovih znakova. Umjesto toga, moลพemo koristiti escape sekvencu da predstavimo takav char. Escape sekvenca poฤinje obrnutom kosom crtom.

The C++ programski jezik definira nekoliko escape sekvenci:

ล to to uฤiniti? Lik
Nova linija \n
Okomita kartica \v
Obrnuta kosa crta \\
Povrat prtljage \r
Vodoravna kartica \t
povratnik \b
Upitnik \?
Ulaganje obrasca \f
Upozorenje (zvono) \a
Double citat \ "
Jedna ponuda \ '

Koristimo izlazni niz kao da se radi o jednom znaku:

cout << '\n';        // prints a newline
cout << "\tguru99!\n";   // prints a tab followed by "guru99!" and a newline 

Takoฤ‘er moลพemo napisati generalizirane izlazne sekvence \x iza kojih slijedi jedna ili viลกe heksadecimalnih znamenki. Ili koristimo \ iza kojeg slijede jedna, ili dvije, ili tri oktalne znamenke. Generalizirani izlazni niz predstavlja numeriฤku vrijednost znaka. Neki primjeri (pod pretpostavkom skupa znakova Latin-1):

\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 newline
cout << '\115' << '\n';     // prints M followed by a newline 

Rezime

  • A C++ varijabla nam daje sposobnost imenovane pohrane.
  • C++ tipovi varijabli: int, double, ฤaฤ‘, float, string, bool, itd.
  • Sadrลพani (ili ugnijeลพฤ‘eni) opseg naziva se unutarnjim opsegom, a sadrลพajni opseg je vanjski opseg.
  • Varijabla jednog tipa moลพe se pretvoriti u drugu. Poznato je kao "Konverzija tipa".
  • Varijablama registara se brลพe pristupa u usporedbi s varijablama memorije.
  • Komentari su dijelovi koda koje kompajler ignorira.
  • Neki znakovi, kao ลกto su povratni razmak i kontrolni znakovi, nemaju vidljivu sliku.

Saลพmite ovu objavu uz: