C++ Variabler og typer: Int, Char, Float, Double, String & Bool

Variabler i C++

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

Grundlæggende typer af variabler i C++

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

Int:

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

Double:

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

Røgelse:

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

Flyde:

En floating-point literal er en numerisk literal, der enten har en brøkform eller en eksponentform. For eksempel: 1.3, 2.6

Streng bogstaver:

En streng er en sekvens af tegn omgivet af dobbelte anførselstegn. For eksempel: "Hvordan har du det?"

Bool:

Den har den boolske værdi sand eller falsk.

Regler for deklarering af variabler i C++

Her er nogle almindelige regler for navngivning af en variabel:

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

C++ Variable datatyper

C++ definerer et helt sæt af primitive typer

ugyldig type har ingen tilknyttede værdier og kan kun bruges i nogle få tilfælde. Det er oftest som returneringstypen af ​​funktioner, der ikke returnerer en værdi.

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

  1. Flydende komma typer. Float (eller flydende type) repræsenterer decimaltal. IEEE-standarden specificerer et minimumsantal af signifikante cifre. De fleste compilere giver normalt mere præcision end det angivne minimum. Typisk er floats repræsenteret med 32 bit, fordobler i 64 bit og lange fordobler i enten 96 eller 128 bit.
  2. Integrale typer (som inkluderer tegn, heltal og booleske typer). Det Boolesk type har kun to typer værdier: Sand eller Falsk. Der er flere char typer, hvoraf de fleste eksisterer for at understøtte internationalisering. Den mest grundlæggende karaktertype er char. En char har samme størrelse som en enkelt maskinbyte, hvilket betyder en enkelt byte.

Integrale typer kan være underskrevet eller usigneret.

Signeret Type: De repræsenterer negative eller positive tal (inklusive nul). I en fortegnstype skal området være ligeligt fordelt mellem +ve og -ve værdier. Således vil et 8-bit tegnet tegn holde værdier fra –127 til 127.

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

C++ Variable datatyper

Variabelnavn eller identifikatorer

Identifikatorer kan være sammensat af nogle bogstaver, cifre og understregningstegn eller en kombination af dem. Der er ingen begrænsning på navnelængden.

Identifikatorer skal

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

// definerer fire forskellige int-variabler

int guru99, gurU99, GuRu99, GURU99;

C++ sprog har reserveret nogle navne til dets brug.

Variabelnavn eller identifikatorer

Der er mange accepterede konventioner for navngivning af variabler i forskellige programmeringssprog. At følge disse konventioner kan forbedre programmets læsbarhed.

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

C++ Variabel erklæring og definition

En erklæring af 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 initialization
int a(5);
int b{5};

Const Qualifier i C++

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

I sådanne tilfælde skal du bruge søgeordet const

const int bufSize = 512;    // input buffer size

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

Her kan vi ikke ændre værdien af ​​et const-objekt efter at vi har oprettet det, det skal være obligatorisk erklæret og initialiseret. Ellers kaster compiler en fejl.

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 

Omfang af variabler i C++

Et omfang er et spænd af 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 rammer. Variabler er synlige fra det punkt, hvor de er deklareret, indtil slutningen af ​​det omfang, hvor deres erklæring vises.

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

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

  • Funktionsnavnet "main" er defineret uden for de krøllede parenteser. Funktionsnavnet hoved - ligesom de fleste andre navne defineret uden for en funktion - har et globalt omfang. Hvilket betyder, at når de er erklæret, navne, der er på globalt omfang er tilgængelige i hele programmet.
  • Den variable sum er defineret inden for rammerne af blokken, som er hovedfunktionens krop. Det kan tilgås fra dets deklarationssted og gennem resten af ​​hovedfunktionens krop. Dog ikke udenfor det. Det betyder, at variabel sum har blokere omfang.
  • Variablen val er defineret i omfanget af "for statement". Det kan sagtens bruges i den sætning, men ikke andre steder i hovedfunktionen. Det har lokalt omfang.

Indlejret omfang

Omfanget kan indeholde andre omfang. Det indeholdte (eller indlejrede) omfang omtales som et indre omfang. Det indeholdende omfang er det ydre omfang.

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

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

sætning er den, der bruger det genbrugte navn, der er defineret i globalt omfang. Denne erklæring udsender

42 0

Output #2 opstår efter den lokale definition af genbrugt. Det er nu i omfang. Derfor bruger denne anden output-sætning simpelthen det lokale objekt med navnet genbrugt i stedet for globalt og output

0 0

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

42 0

Variabel Typekonvertering

En variabel af én type kan konverteres til en anden. Det er kendt som "Typekonvertering". Lad os se reglerne for konvertering anderledes C++ variable typer:

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

bool b = 42;            // b is true

Tildeling af en bool til en af ​​de andre regnetyper 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 kommaværdi til en variabel af int-typen giver den værdi, som afkortes. Værdien, 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 flydende type resulterer i, at brøkdelen bliver nul. Præcision går normalt tabt, hvis hele tallet 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 typen uden fortegn, er resultatet resten af ​​værdien %(modulo)

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

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 fortegnstype, er resultatet uforudsigeligt. Det er udefineret. Programmet kan se ud til at virke på ydersiden, 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 én type, hvor der forventes en værdi af en anden type.

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

Hvis denne værdi = 0, så er betingelsen falsk; alle andre (ikke-nul) værdier giver sand. Efter det samme koncept, når vi bruger en bool i et aritmetisk udtryk, konverteres dens værdi altid til enten 0 eller 1. Som følge heraf er brugen af ​​en bool i et aritmetisk udtryk normalt næsten sikkert forkert.

Forsigtig: Bland ikke signerede og usignerede typer

Udtryk, der blander fortegn og usigneret, kan give overraskende og forkerte resultater, når fortegnsværdien er negativ. Som diskuteret ovenfor konverteres fortegnsvæ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, så er værdien som forventet -1.

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

Registrer variabler

Registervariabler er hurtigere at få adgang til sammenlignet med hukommelsesvariabler. Så variabler, der ofte bruges i en C++ program kan sættes i registre vha register søgeord. Registernøgleordet fortæller compileren at gemme den givne variabel i et register. Det er compilerens valg, om det skal lægges i et register eller ej. Generelt udfører compilere selv forskellige optimeringer, som inkluderer at sætte nogle af variablerne i registret. Der er ingen begrænsning på antallet af registervariable i en C++ program. Men compileren gemmer muligvis ikke variablen i et register. Dette skyldes, at registerhukommelsen er meget begrænset og mest generelt bruges af OS.

At definere:

register int i;

Kommentarer

Kommentarer er de dele af koden, der ignoreres af compileren. Det giver programmøren mulighed for at lave noter i de relevante områder af kildekoden/programmet. Kommentarer kommer enten i blokform eller enkelte linjer. Programkommentarerne er forklarende udsagn. Det kan indgå i C++ kode, som hjælper enhver med at læse dens kildekode. Alle programmeringssprog tillader en eller anden form for kommentarer. C++ understøtter både enkeltlinje- og flerlinjekommentarer.

  • Enkeltlinjekommentarer er dem, der starter med // og fortsætter indtil slutningen af ​​linjen. Hvis det sidste tegn i en kommentarlinje er et \, vil kommentaren fortsætte i næste linje.
  • Kommentarer med flere linjer 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 ikke noget synligt billede. Sådanne tegn er kendt som ikke-udskrivbare tegn. Andre tegn (enkelte og dobbelte anførselstegn, spørgsmålstegn og skråstreg) har en 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 sådan char. En escape-sekvens begynder med en omvendt skråstreg.

C++ programmeringssprog definerer flere escape-sekvenser:

Hvad gør det? Character
Ny linje \n
Lodret fane \v
backslash \\
Vognretur \r
Vandret fane \t
Backspace \b
Spørgsmålstegn \?
Formfeed \f
Alarm (klokke) \a
Double citere \ ”
Enkelt citat \ '

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

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

Vi kan også skrive generaliserede escape-sekvenser \x efterfulgt af et eller flere hexadecimale cifre. Eller vi bruger et \ efterfulgt af et, eller to eller tre oktale cifre. Den generaliserede escape-sekvens repræsenterer tegnets numeriske værdi. Nogle eksempler (forudsat at Latin-1 tegnsæt):

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

Vi kan bruge foruddefinerede escape-sekvenser, da vi bruger et hvilket som helst andet tegn.

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

Resumé

  • A C++ variabel giver os en navngivet lagerkapacitet.
  • C++ variabeltyper: int, double, char, flyder, snor, bool osv.
  • Det indeholdte (eller indlejrede) omfang omtales som et indre omfang, og det indeholdende omfang er det ydre omfang.
  • En variabel af én type kan konverteres til en anden. Det er kendt som "Typekonvertering".
  • Registervariabler er hurtigere at få adgang til sammenlignet med hukommelsesvariabler.
  • Kommentarer er de dele af koden, der ignoreres af compileren.
  • Nogle tegn, såsom backspace og kontroltegn, har ikke noget synligt billede.