Premenné a typy C ++: int, double, char, string, bool

Obsah:

Anonim

Premenné v C ++

Premenná C ++ nám poskytuje pomenovanú úložnú kapacitu. Umožňuje programátorovi manipulovať s údajmi podľa potreby. Každá premenná má typ v C ++. Typ premennej pomáha určiť veľkosť a rozloženie mapy pamäte premennej, rozsah hodnôt, ktoré je možné do tejto pamäte uložiť, a množinu operácií, ktoré je možné na ňu použiť.

V tomto výučbe pre C ++ sa dozviete:

  • Premenné v C ++
  • Základné typy premenných v C ++
  • Pravidlá deklarovania premenných v C ++
  • Variabilné dátové typy C ++
  • Názov alebo identifikátory premennej
  • Const Qualifier v C ++
  • Rozsah premenných v C ++
  • Premena premenného typu
  • Registrovať premenné
  • Únikové sekvencie

Základné typy premenných v C ++

Tu sú základné typy premenných C ++:

Int:

Celé číslo je číselný literál (spojený s číslami) bez akejkoľvek zlomkovej alebo exponenciálnej časti. Príklad. 120, -90 atď.

Dvojité:

Je to hodnota s pohyblivou rádovou čiarkou s dvojitou presnosťou. Príklad: 11.22, 2.345

Char:

Znakový literál sa vytvorí vložením jedného znaku do jednoduchých úvodzoviek. Napríklad: 'a', 'm', 'F', 'P', '}' atď.

Plavák:

Literál s pohyblivou rádovou čiarkou je číselný literál, ktorý má buď zlomkovú formu, alebo exponentovú formu. Napríklad: 1.3, 2.6

Sláčikové literály:

Reťazcový literál je postupnosť znakov uzavretých v úvodzovkách. Napríklad: „Ako sa máš?“

Bool:

Platí boolovská hodnota pravdivá alebo nepravdivá.

Pravidlá deklarovania premenných v C ++

Tu uvádzame niekoľko bežných pravidiel pre pomenovanie premennej:

  • Názov premennej C ++ môže mať iba abecedy, čísla a podčiarkovník.
  • Názov premennej C ++ nemôže začínať číslom.
  • Názvy premenných by nemali začínať veľkým písmenom.
  • Názov premennej používaný v C ++ nemôže byť kľúčové slovo. Napríklad int je kľúčové slovo, ktoré sa používa na označenie celých čísel.
  • Názov premennej C ++ môže začínať podčiarkovníkom. Nepovažuje sa to však za dobrú prax.

Variabilné dátové typy C ++

C ++ definuje celú sadu primitívnych typov

Void typ nemá žiadny spojený hodnoty s ňou a môžu byť použité len v niekoľkých málo prípadoch. Najčastejšie je to návratový typ funkcií, ktoré nevracajú hodnotu.

K aritmetické typy obsahujú znaky, celé čísla, logické hodnoty a čísla s plávajúcou desatinnou čiarkou. Aritmetický typ, ak je ďalej rozdelený do 2 kategórií

  1. Typy s pohyblivou rádovou čiarkou . Plavák (alebo plávajúci typ) predstavuje desatinné čísla. Norma IEEE určuje minimálny počet platných číslic. Väčšina prekladačov zvyčajne poskytuje väčšiu presnosť, ako je stanovené minimum. Typicky sú plaváky reprezentované 32 bitmi, zdvojnásobením 64 bitov a dlhými zdvojnásobeniami buď 96 alebo 128 bitov.
  2. Integrálne typy (ktoré zahŕňajú znaky, celé čísla a logické typy). Boolean typ má iba dva typy hodnôt: true alebo false. Existuje niekoľko typov znakov , z ktorých väčšina existuje na podporu internacionalizácie. Najzákladnejším typom postavy je char. Znak má rovnakú veľkosť ako jeden bajt stroja, čo znamená jeden bajt.

Tieto integrálne typy môžu byť podpísané alebo unsigned.

Podpísaný typ : Predstavujú záporné alebo kladné čísla (vrátane nuly). Pri podpísanom type musí byť rozsah rovnomerne rozdelený medzi hodnoty + ve a -ve. 8-bitový znak so znamienkom teda bude obsahovať hodnoty od -127 do 127.

Nepodpísaný typ : V nepodpísanom type sú všetky hodnoty> = 0. 8-bitový nepodpísaný znak môže obsahovať 0 až 255 (obe vrátane).

Názov alebo identifikátory premennej

Identifikátory môžu byť zložené z niekoľkých písmen, číslic a znaku podčiarknutia alebo z ich kombinácie. Dĺžka mena nie je obmedzená.

Identifikátory musia

  • začínajte buď písmenom, alebo podčiarkovníkom („_“).
  • A rozlišujú veľké a malé písmená; veľké a malé písmená sú odlišné:

// definuje štyri rôzne premenné int

int guru99, gurU99, GuRu99, GURU99;

Jazyk C ++ si vyhradil pre svoje použitie niektoré názvy.

Existuje mnoho prijatých konvencií na pomenovanie premenných v rôznych programovacích jazykoch. Dodržiavanie týchto dohovorov môže zlepšiť čitateľnosť programu.

  • Identifikátor by mal poskytnúť aspoň určitý údaj o jeho význame.
  • Názvy premenných sú zvyčajne malé-guru99, nie Guru99 alebo GURU99.
  • Triedy, ktoré definujeme, sa zvyčajne začínajú veľkým písmenom.
  • Identifikátory, ktoré obsahujú viac slov, by mali každé slovo vizuálne odlíšiť. Napríklad guru99_website nie guru99website.

Deklarácia a definícia premennej C ++

Deklarácia premennej sprístupňuje program názvu v rozsahu, v ktorom je definovaný. Príklad:

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

Const Qualifier v C ++

Predpokladajme, že existuje premenná veľkosť buffsize, ktorá udáva počet vstupov, ktoré sa majú od používateľa odoberať. Tu nechceme meniť hodnotu buffsize v celom programe. Chceme definovať premennú, ktorej hodnota, o ktorej vieme, že by sa nemala meniť.

V takom prípade použite kľúčové slovo const

const int bufSize = 512; // input buffer size

To definuje bufSize ako konštantu. Akýkoľvek pokus o priradenie alebo zmenu bufSize spôsobí chybu.

Tu nemôžeme zmeniť hodnotu objektu const po jeho vytvorení, musí sa povinne deklarovať a inicializovať. Inak kompilátor vyhodí chybu.

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

Rozsah premenných v C ++

Rozsah je rozsah programu, kde má premenná význam. Väčšinou rovnaký názov možno použiť na označenie rôznych entít v rámci rôznych rozsahov. Premenné sú viditeľné od bodu, v ktorom sú deklarované, do konca rozsahu, v ktorom sa ich deklarácia objavuje.

#include int 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 <

Tento program definuje 3 mená, viz, main, sum a val. Používa názov menného priestoru std spolu s dvoma ďalšími názvami z tohto menného priestoru-cout a endl.

  • Názov funkcie „hlavný“ je definovaný mimo zložených zátvoriek. Názov funkcie hlavný - rovnako ako väčšina ostatných názvov definovaných mimo funkcie - má globálny rozsah. Čo znamená, že po deklarácii sú názvy, ktoré majú globálny rozsah, prístupné v celom programe.
  • Premenná suma je definovaná v rámci rozsahu bloku, ktorý je telom hlavnej funkcie. Je k nim prístup z jeho deklaračného bodu a cez zvyšok tela hlavnej funkcie. Nie však mimo nej. To znamená, že premenná suma má rozsah bloku .
  • Premenná val je definovaná v rozsahu výrazu „for statement“. Môže sa ľahko použiť v tomto vyhlásení, ale nie inde v hlavnej funkcii. Má to miestny rozsah .

Vnorený rozsah

Rozsah môže obsahovať ďalšie rozsahy. Obsiahnutý (alebo vnorený) rozsah sa označuje ako vnútorný rozsah. Obsahujúci rozsah je vonkajší rozsah.

#include 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 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;}

Výstup č. 1 sa objaví pred lokálnou definíciou opätovného použitia. Teda tento výstup

príkaz je ten, ktorý používa opätovne použitý názov, ktorý je definovaný v globálnom rozsahu. Toto vyhlásenie je výstupom

42 0

Výstup č. 2 nastáva po lokálnej definícii opätovného použitia. Teraz je to v rozsahu. Preto tento druhý výstupný príkaz jednoducho používa lokálny objekt s názvom znovu použitý, a nie globálny, a výstupy

0 0

Výstup # 3 prepíše predvolené pravidlá rozsahu pomocou operátora rozsahu. Globálny rozsah nemá názov. Teda keď má operátor rozsahu (: :) prázdnu ľavú stranu. Interpretuje to ako požiadavku na získanie názvu na pravej strane globálneho rozsahu. Výraz teda používa globálne opätovné použitie a výstupy

42 0

Premena premenného typu

Premennú jedného typu možno previesť na iný. Je známa ako „Konverzia typu“. Pozrime sa na pravidlá prevodu rôznych typov premenných C ++:

Priradením premennej non-bool k premennej bool sa získa hodnota false, ak je hodnota 0, a inak true.

bool b = 42; // b is true

Priradením boolu k jednému z ďalších aritmetických typov sa získa 1, ak je bool true a 0, ak je bool false.

bool b = true;int i = b; // i has value 1

Priradením hodnoty s pohyblivou rádovou čiarkou k premennej typu int sa získa hodnota, ktorá je skrátená. Uložená hodnota je časť pred desatinnou čiarkou.

int i = 3.14; // i has value 3

Priradením hodnoty int k premennej typu float sa čiastočná časť stane nulovou. Presnosť sa zvyčajne stratí, ak má celé číslo viac bitov, ako dokáže pojať pohyblivá premenná.

Int i=3;double pi = i; // pi has value 3.0

Ak sa pokúsime priradiť hodnotu mimo rozsah premennej typu bez znamienka, výsledkom je zvyšok hodnoty% (modulo)

Napríklad 8-bitový nepodpísaný typ znaku môže obsahovať hodnoty od 0 do 255 vrátane. Priradenie hodnoty mimo tento rozsah povedie k tomu, že kompilátor priradí zvyšnú časť tejto hodnoty modulo 256. Preto podľa logiky vyššie priradí -1 k 8-bitovému nepodpísanému znaku tomuto objektu hodnotu 255.

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

Ak sa pokúsime objektu typu podpísaného typu priradiť hodnotu mimo rozsahu, výsledok je nepredvídateľný. Je to nedefinované. Môže sa zdať, že program funguje zvonku, alebo môže zlyhať alebo môže vytvárať hodnoty smetí.

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

Kompilátor použije tento istý typ konverzií, keď použijeme hodnotu jedného typu, kde sa očakáva hodnota iného typu.

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

Ak je táto hodnota = 0, potom je podmienka nepravdivá; všetky ostatné (nenulové) hodnoty majú hodnotu true. Z rovnakého konceptu, keď použijeme bool v aritmetickom výraze, jeho hodnota sa vždy prevedie na 0 alebo 1. Výsledkom je, že použitie bool v aritmetickom výraze je zvyčajne takmer určite nesprávne.

Pozor: Nemiešajte podpísané a nepodpísané typy

Výrazy, ktoré kombinujú podpísané a nepodpísané, môžu priniesť prekvapivé a nesprávne výsledky, keď je podpísaná hodnota záporná. Ako je uvedené vyššie, podpísané hodnoty sa automaticky prevedú na nepodpísané.

Napríklad v aritmetickom výraze ako

x* y

Ak x je -1 a y je 1, a ak obidve x a y sú int, potom je hodnota podľa očakávania -1.

Ak x je int a y sú nepodpísané, potom hodnota tohto výrazu závisí od toho, koľko bitov má celé číslo na kompilačnom stroji. Na našom stroji tento výraz dáva 4294967295.

Registrovať premenné

Prístup k premenným registrov je rýchlejší v porovnaní s pamäťovými premennými. Takže premenné, ktoré sa často používajú v programe C ++, je možné vložiť do registrov pomocou kľúčového slova register . Kľúčové slovo register hovorí kompilátoru, aby danú premennú uložil do registra. Je na kompilátorovej voľbe, či to dá do registra alebo nie. Samotné kompilátory vo všeobecnosti robia rôzne optimalizácie, ktoré zahŕňajú vloženie niektorých premenných do registra. Počet premenných registrov v programe C ++ nie je nijako obmedzený. Ale kompilátor nemusí premennú uložiť do registra. Je to tak preto, lebo pamäť registrov je veľmi obmedzená a operačný systém ju najčastejšie používa.

Definovať:

register int i;

Pripomienky

Komentáre sú časti kódu, ktoré kompilátor ignoroval. Umožňuje programátorovi robiť si poznámky v príslušných oblastiach zdrojového kódu / programu. Komentáre prichádzajú buď v blokovej forme, alebo v samostatných riadkoch. Komentáre k programu sú vysvetľujúce vyhlásenia. Môže byť zahrnutý v kóde C ++, ktorý pomáha komukoľvek čítať jeho zdrojový kód. Všetky programovacie jazyky umožňujú určitú formu komentárov. C ++ podporuje jednoriadkové aj viacriadkové komentáre.

  • Jednořádkové komentáre sú tie, ktoré začínajú na // a pokračujú až do konca riadku. Ak je posledný znak v riadku komentára \, potom bude komentár pokračovať v ďalšom riadku.
  • Viacriadkové komentáre sú tie, ktoré začínajú / * a končia * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Únikové sekvencie

Niektoré znaky, napríklad backspace a kontrolné znaky, nemajú viditeľný obraz. Takéto znaky sú známe ako netlačiteľné znaky. Ostatné znaky (jednoduché a úvodzovky, otáznik a spätná lomka) majú v mnohých programovacích jazykoch špeciálny význam.

Naše programy nie sú schopné priamo použiť žiadne z týchto znakov. Namiesto toho môžeme na označenie takého znaku použiť únikovú sekvenciu. Úniková sekvencia sa začína spätným lomítkom.

Programovací jazyk C ++ definuje niekoľko únikových sekvencií:

Čo to robí?

Postava

Nový riadok

\ n

Zvislá karta

\ v

Spätné lomítko

\\

Návrat vozíka

\ r

Horizontálna karta

\ t

Backspace

\ b

Otáznik

\?

Formfeed

\ f

Výstraha (zvonček)

\ a

Dvojitá citácia

\ "

Jednotná ponuka

\ '

Postupnú únikovú cestu používame, akoby to bol jeden znak:

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

Môžeme tiež napísať zovšeobecnené únikové sekvencie \ x, za ktorými nasleduje jedna alebo viac hexadecimálnych číslic. Alebo použijeme \, za ktorým nasleduje jedna, dve alebo tri osmičkové číslice. Zovšeobecnená úniková sekvencia predstavuje číselnú hodnotu znaku. Niekoľko príkladov (za predpokladu znakovej sady Latin-1):

\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')

Môžeme použiť preddefinované únikové sekvencie, pretože používame akýkoľvek iný znak.

cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newline

Zhrnutie

  • Premenná C ++ nám poskytuje pomenovanú úložnú kapacitu.
  • Typy premenných C ++: int, double, char, float, string, bool atď.
  • Obsiahnutý (alebo vnorený) rozsah sa označuje ako vnútorný rozsah a obsahujúci rozsah je vonkajší rozsah.
  • Premennú jedného typu možno previesť na iný. Je známa ako „Konverzia typu“.
  • Prístup k premenným registrov je rýchlejší v porovnaní s pamäťovými premennými.
  • Komentáre sú časti kódu, ktoré kompilátor ignoroval.
  • Niektoré znaky, napríklad backspace a kontrolné znaky, nemajú viditeľný obraz.