C ++ variabler og typer: int, dobbelt, char, streng, bool

Indholdsfortegnelse:

Anonim

Variabler i C ++

En C ++ -variabel giver os en navngivet lagerfunktion. Det giver programmøren mulighed for at manipulere data efter behov. Hver variabel har en type i C ++. Variabeltypen hjælper med at bestemme størrelsen og layoutet på variabelens hukommelseskort, rækkevidden af ​​værdier, der kan gemmes i den hukommelse, og det sæt operationer, der kan anvendes på den.

I denne C ++ tutorial lærer du:

  • Variabler i C ++
  • Grundlæggende typer af variabler i C ++
  • Regler for deklarering af variabler i C ++
  • C ++ variabelt datatyper
  • Variabelt navn eller identifikatorer
  • Const Qualifier i C ++
  • Omfanget af variabler i C ++
  • Konvertering af variabel type
  • Registrer variabler
  • Escape sekvenser

Grundlæggende typer af variabler i C ++

Her er de grundlæggende typer C ++ -variabler:

Int:

Et heltal er et numerisk bogstav (forbundet med tal) uden nogen brøk eller eksponentiel del. Eksempel. 120, -90 osv.

Dobbelt:

Det er en flydepunktsværdi med dobbelt præcision. Eksempel: 11.22, 2.345

Char:

En bogstavelig karakter oprettes ved at omslutte et enkelt tegn i enkelte anførselstegn. For eksempel: 'a', 'm', 'F', 'P', '}' osv.

Flyde:

En flydende-bogstavelig er en numerisk bogstav, der enten har en brøkform eller en eksponentform. For eksempel: 1.3, 2.6

Strenglitteratur:

En streng bogstavelig er en sekvens af tegn, der er omsluttet af dobbelt anførselstegn. For eksempel: "Hvordan har du det?"

Bool:

Det holder boolsk værdi sand eller falsk.

Regler for deklarering af variabler i C ++

Her er nogle almindelige regler for navngivning af en variabel:

  • Et C ++-variabelnavn kan kun have alfabeter, tal og understregning.
  • Et C ++-variabelnavn kan ikke begynde med et tal.
  • Variablenavne bør ikke begynde med et stort bogstav.
  • Et variabelnavn, der bruges i C ++, kan ikke være et nøgleord. For eksempel er int et nøgleord, der bruges til at betegne heltal.
  • Et C ++ variabelnavn kan starte med en understregning. Det betragtes dog ikke som en god praksis.

C ++ variabelt datatyper

C ++ definerer et helt sæt primitive typer

Det tomrum type er ikke tilknyttet værdier med det og kan bruges i kun et par forhold. Det er mest som returneringstypen af ​​funktioner, der ikke returnerer en værdi.

De aritmetiske typer inkluderer tegn, heltal, boolske værdier og flydende tal. Aritmetisk type, hvis yderligere opdelt i 2 kategorier

  1. Flydepunkttyper . Flyderen (eller flydende type) repræsenterer decimaltal. IEEE-standarden specificerer et minimum antal signifikante cifre. De fleste compilere leverer normalt mere præcision end det specificerede minimum. Typisk er floats repræsenteret af 32 bit, dobbelt i 64 bit og lange dobbelt i enten 96 eller 128 bits.
  2. Integrale typer (som inkluderer tegn, heltal og boolske typer). Den boolske type har kun to typer værdier: Sand eller Falsk. Der er flere char- typer, hvoraf de fleste findes for at støtte internationalisering. Den mest basale karaktertype er char. En char er af samme størrelse som en enkelt maskine-byte, hvilket betyder en enkelt byte.

De Integral typer kan være med eller uden fortegn.

Signeret type : De repræsenterer negative eller positive tal (inklusive nul). I en signeret type skal området fordeles jævnt mellem + ve og -ve værdier. Således vil en 8-bit signeret char indeholde værdier fra -127 til 127.

Unsigneret type : I en usigneret type er alle værdier> = 0. En 8-bit usigneret tegn kan indeholde 0 til 255 (begge inklusive).

Variabelt navn eller identifikatorer

Identifikatorer kan være sammensat af nogle bogstaver, cifre og understregningstegnet eller en kombination af dem. Der pålægges ingen grænser for navnelængden.

Identifikatorer skal

  • begynde med enten et bogstav eller en understregning ('_').
  • Og er store og små bogstaver store og små bogstaver er forskellige:

// definerer fire forskellige int-variabler

int guru99, gurU99, GuRu99, GURU99;

C ++ - sproget har reserveret nogle navne til dets brug.

Der er mange accepterede konventioner til navngivning af variabler på forskellige programmeringssprog. At følge disse konventioner kan forbedre læsbarheden af ​​programmet.

  • En identifikator skal i det mindste give en vis indikation af dens betydning.
  • Variable navne er normalt små-guru99, ikke Guru99 eller GURU99.
  • De klasser, vi definerer, begynder normalt med et stort bogstav.
  • Identifikatorer, der indeholder flere ord, skal skelne mellem hvert ord visuelt. For eksempel guru99_website ikke guru99website.

C ++ variabel erklæring og definition

En erklæring om en variabel gør et navn kendt for programmet i det omfang, det er defineret i. Eksempel:

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

Const Qualifier i C ++

Antag, at der er en variabel buffstørrelse, der angiver antallet af input, der skal tages fra brugeren. Her ønsker vi ikke at ændre værdien af ​​buffsize i hele programmet. Vi vil definere en variabel, hvis værdi vi ved ikke bør ændre.

I så fald skal du bruge nøgleordet const

const int bufSize = 512; // input buffer size

Dette definerer bufSize som en konstant. Ethvert forsøg på at tildele eller ændre bufSize giver en fejl.

Her kan vi ikke ændre værdien af ​​et const-objekt, når vi opretter det, det skal obligatorisk erklæres og initialiseres. Ellers kaster kompilatoren en fejl.

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

Omfanget af variabler i C ++

Et omfang er et spændvidde for et program, hvor en variabel har en betydning. For det meste kan det samme navn bruges til at henvise til forskellige enheder inden for forskellige anvendelsesområder. Variabler er synlige fra det punkt, hvor de deklareres, indtil slutningen af ​​det anvendelsesområde, hvori deres erklæring vises.

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

Dette program definerer 3 navne, nemlig hoved, sum og val. Det bruger navneområdet navn std sammen med to andre navne fra det navneområde-cout og endl.

  • Funktionsnavnet "main" er defineret uden for de krøllede seler. Funktionsnavnet, som de fleste andre navne, der er defineret uden for en funktion, har et globalt anvendelsesområde. Hvilket betyder, at når de er erklæret, er navne, der er globalt anvendelige tilgængelige i hele programmet.
  • Den variable sum defineres inden for rækkevidden af ​​blokken, som er hovedfunktionens hoveddel. Den er tilgængelig fra sit erklæringssted og i resten af ​​hovedfunktionens krop. Dog ikke uden for det. Dette betyder, at variabel sum har blokomfang .
  • Den variable val er defineret i omfanget af "til sætning". Det kan let bruges i denne erklæring, men ikke andetsteds i hovedfunktionen. Det har lokalt omfang .

Indlejret rækkevidde

Omfanget kan indeholde andre anvendelsesområder. Det indeholdte (eller indlejrede) omfang kaldes et indre omfang. Det indeholdende omfang er det ydre omfang.

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

Output # 1 vises før den lokale definition af genbrugt. Således dette output

Erklæring er den, der bruger navnet genbrugt, der er defineret i globalt omfang. Denne erklæring output

42 0

Output # 2 opstår efter den lokale definition af genbrug. Det er nu inden for rækkevidde. Derfor bruger denne anden outputerklæring blot det lokale objekt med navnet genbrugt snarere end globalt og output

0 0

Output # 3 tilsidesætter standardomfangsreglerne ved hjælp af scope-operatøren. Det globale anvendelsesområde har intet navn. Således når omfangsoperatøren (: :) har en tom venstre side. Det fortolker det som en anmodning om at hente navnet på højre side af det globale omfang. Således bruger udtrykket det globale genbrug og output

42 0

Konvertering af variabel type

En variabel af en type kan konverteres til en anden. Det er kendt som "Type Conversion." Lad os se reglerne for konvertering af forskellige C ++ variabeltyper:

Tildeling af ikke-bool til en bool-variabel giver false, hvis værdien er 0 og ellers sandt.

bool b = 42; // b is true

Tildeling af en bool til en af ​​de andre aritmetiske typer giver 1, hvis bool er sand og 0, hvis bool er falsk.

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

Tildeling af en flydende punktværdi til en variabel af int-typen giver den værdi, der er afkortet. Den værdi, der er gemt, er delen før decimaltegnet.

int i = 3.14; // i has value 3

Tildeling af en int-værdi til en variabel af float-type resulterer i, at den brøkdel bliver nul. Præcision går normalt tabt, hvis heltal har flere bits, end den flydende variabel kan rumme.

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

Hvis vi forsøger at tildele en værdi uden for området til en variabel af usigneret type, er resultatet resten af ​​værdien% (modulo)

For eksempel kan en 8-bit usigneret char-type indeholde værdier fra 0 til 255 inklusive. Tildeling af en værdi uden for dette interval vil resultere i, at kompilatoren tildeler resten af ​​denne værdi modulo 256. Derfor giver tildelingen af ​​-1 til en 8-bit usigneret char ved hjælp af logikken ovenfor det objekt værdien 255.

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

Hvis vi forsøger at tildele en værdi uden for området til et objekt af signeret type, er resultatet uforudsigeligt. Det er udefineret. Programmet ser ud til at virke udefra, eller det kan gå ned, eller det kan producere skraldværdier.

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

Compileren anvender den samme type konverteringer, når vi bruger en værdi af en type, hvor en værdi af en anden type forventes.

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

Hvis denne værdi = 0, er betingelsen falsk; alle andre (ikke-nul) værdier giver ægte. Ved det samme koncept, når vi bruger en bool i et aritmetisk udtryk, konverteres dens værdi altid til enten 0 eller 1. Som et resultat er brug af en bool i et aritmetisk udtryk normalt næsten sikkert forkert.

Forsigtig: Bland ikke signerede og usignerede typer

Udtryk, der blander signeret og usigneret, kan give overraskende og forkerte resultater, når den underskrevne værdi er negativ. Som beskrevet ovenfor konverteres signerede værdier automatisk til usignerede.

For eksempel i et aritmetisk udtryk som

x* y

Hvis x er -1 og y er 1, og hvis både x og y er int, er værdien som forventet -1.

Hvis x er int, og y ikke er underskrevet, afhænger værdien af ​​dette udtryk af, hvor mange bits et heltal har på kompileringsmaskinen. På vores maskine giver dette udtryk 4294967295.

Registrer variabler

Registervariabler er hurtigere tilgængelige end hukommelsesvariabler. Så variabler, der ofte bruges i et C ++ - program, kan placeres i registre ved hjælp af registernavnet . Registreringsnøgleordet fortæller kompilatoren at gemme den givne variabel i et register. Det er kompilatorens valg, om det skal placeres i et register eller ej. Generelt foretager kompilatorer selv forskellige optimeringer, som inkluderer at placere nogle af variablerne i registret. Der er ingen grænse for antallet af registervariabler i et C ++ - program. Men compileren gemmer muligvis ikke variablen i et register. Dette skyldes, at registerhukommelsen er meget begrænset og normalt bruges af operativsystemet.

At definere:

register int i;

Kommentarer

Kommentarer er de dele af koden, der ignoreres af kompilatoren. Det giver programmøren mulighed for at lave notater i de relevante områder af kildekoden / programmet. Kommentarer kommer enten i blokform eller enkeltlinjer. Programkommentarerne er forklarende udsagn. Det kan inkluderes i C ++ - koden, som hjælper alle, der læser dens kildekode. Alle programmeringssprog tillader en eller anden form for kommentarer. C ++ understøtter både enkeltlinje- og flerlinjekommentarer.

  • Kommentarer med en linje er dem, der starter med // og fortsætter til slutningen af ​​linjen. Hvis det sidste tegn i en kommentarlinje er a \, fortsætter kommentaren i den næste linje.
  • Flere linjekommentarer er dem, der starter med / * og slutter med * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Escape sekvenser

Nogle tegn, såsom backspace og kontroltegn, har intet synligt billede. Sådanne tegn er kendt som ikke-printbare tegn. Andre tegn (enkelt og dobbelt anførselstegn, spørgsmålstegn og tilbageslag) har særlig betydning i de mange programmeringssprog.

Vores programmer er ikke i stand til at bruge nogen af ​​disse tegn direkte. I stedet kan vi bruge en escape-sekvens til at repræsentere en sådan char. En flugtsekvens begynder med et tilbageslag.

C ++ programmeringssproget definerer flere escape-sekvenser:

Hvad gør den?

Karakter

Ny linje

\ n

Lodret fane

\ v

Backslash

\\

Vognretur

\ r

Vandret fane

\ t

Backspace

\ b

Spørgsmålstegn

\?

Formfeed

\ f

Alert (klokke)

\en

Dobbelt tilbud

\ "

Enkelt tilbud

\ '

Vi bruger en escape-sekvens, som om det var et enkelt tegn:

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

Vi kan også skrive generaliserede flugtsekvenser \ x efterfulgt af et eller flere hexadecimale cifre. Eller vi bruger et \ efterfulgt af et, eller to eller tre oktale cifre. Den generaliserede flugtsekvens repræsenterer den numeriske værdi af tegnet. Nogle eksempler (forudsat at sætningen Latin-1 tegner):

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

Vi kan bruge foruddefinerede escape-sekvenser, da vi bruger ethvert andet tegn.

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

Resumé

  • En C ++ -variabel giver os en navngivet lagerfunktion.
  • C ++ variabeltyper: int, dobbelt, char, float, streng, bool osv.
  • Det indeholdte (eller indlejrede) omfang kaldes et indre omfang, og det indeholdende omfang er det ydre omfang.
  • En variabel af en type kan konverteres til en anden. Det er kendt som "Type Conversion."
  • Registervariabler er hurtigere tilgængelige end hukommelsesvariabler.
  • Kommentarer er de dele af koden, der ignoreres af kompilatoren.
  • Nogle tegn, såsom backspace og kontroltegn, har intet synligt billede.