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

Variabler i C++

A C++ variabel gir oss en navngitt lagringskapasitet. Det lar programmereren manipulere data etter behov. Hver variabel har en type inn C++. Variabeltypen hjelper til med รฅ bestemme stรธrrelsen og oppsettet til variabelens minnekart, rekkevidden av verdier som kan lagres i det minnet, og settet med operasjoner som kan brukes pรฅ det.

Grunnleggende typer variabler i C++

Her er de grunnleggende typene C++ variabler:

Int:

Et heltall er en numerisk bokstav (assosiert med tall) uten noen brรธkdel eller eksponentiell del. Eksempel. 120, -90, osv.

Double:

Det er en flytende kommaverdi med dobbel presisjon. Eksempel: 11.22, 2.345

Rรธye:

En bokstavelig bokstav opprettes ved รฅ omslutte et enkelt tegn innenfor enkle anfรธrselstegn. For eksempel: 'a', 'm', 'F', 'P', '}' osv.

Flyte:

En flytende-komma-literal er en numerisk literal som enten har en brรธkform eller en eksponentform. For eksempel: 1.3, 2.6

Strenglitteratur:

En streng bokstavelig er en sekvens av tegn omsluttet av doble anfรธrselstegn. For eksempel: "Hvordan har du det?"

Bool:

Den har boolsk verdi true eller false.

Regler for deklarering av variabler i C++

Her er noen vanlige regler for รฅ navngi en variabel:

  • A C++ variabelnavn kan bare ha alfabeter, tall og understrek.
  • A C++ variabelnavn kan ikke begynne med et tall.
  • Variabelnavn skal ikke begynne med store bokstaver.
  • Et variabelnavn brukt i C++ kan ikke vรฆre et nรธkkelord. For eksempel er int et nรธkkelord som brukes til รฅ betegne heltall.
  • A C++ variabelnavn kan starte med et understrek. Det anses imidlertid ikke som en god praksis.

C++ Variable datatyper

C++ definerer et helt sett med primitive typer

Ocuco ugyldiggjรธre type har ingen tilknyttede verdier og kan brukes i noen fรฅ tilfeller. Det er oftest som returtype funksjoner som ikke returnerer en verdi.

Ocuco aritmetiske typer inkluderer tegn, heltall, boolske verdier og flyttall. Aritmetisk type hvis videre delt inn i 2 kategorier

  1. Flytende kommatyper. Den flytende (eller den flytende typen) representerer desimaltall. IEEE-standarden spesifiserer et minimum antall signifikante sifre. De fleste kompilatorer gir vanligvis mer presisjon enn det spesifiserte minimumet. Vanligvis er flyter representert med 32 biter, dobler i 64 biter og lange dobler med enten 96 eller 128 biter.
  2. Integrerte typer (som inkluderer tegn, heltall og boolske typer). De boolean type har bare to typer verdier: True eller False. Det er flere chariot typer, hvorav de fleste eksisterer for รฅ stรธtte internasjonalisering. Den mest grunnleggende karaktertypen er char. En char har samme stรธrrelse som en enkelt maskinbyte som betyr en enkelt byte.

Ocuco Integrerte typer kan vรฆre signert eller usignert.

Signert Type: De representerer negative eller positive tall (inkludert null). I en fortegnstype mรฅ omrรฅdet deles jevnt mellom +ve- og -ve-verdier. Dermed vil en 8-bits tegn med tegn holde verdier fra โ€“127 til 127.

Usignert type: I en usignert type er alle verdier >= 0. Et 8-bits usignert tegn kan inneholde 0 til og med 255 (begge inkludert).

C++ Variable datatyper

Variabelnavn eller identifikatorer

Identifikatorer kan vรฆre sammensatt av noen bokstaver, sifre og understrekingstegnet eller en kombinasjon av dem. Det er ikke satt noen begrensninger pรฅ navnelengden.

Identifikatorer mรฅ

  • begynne med enten en bokstav eller et understrek ('_').
  • Og skiller mellom store og smรฅ bokstaver; store og smรฅ bokstaver er forskjellige:

// definerer fire forskjellige int-variabler

int guru99, gurU99, GuRu99, GURU99;

Ocuco C++ sprรฅk har reservert noen navn for bruk.

Variabelnavn eller identifikatorer

Det er mange aksepterte konvensjoner for รฅ navngi variabler i forskjellige programmeringssprรฅk. ร… fรธlge disse konvensjonene kan forbedre lesbarheten til programmet.

  • En identifikator bรธr gi minst en viss indikasjon pรฅ betydningen.
  • Variablenavn er vanligvis smรฅ bokstaver โ€“ guru99, ikke Guru99 eller GURU99.
  • Klassene vi definerer begynner vanligvis med en stor bokstav.
  • Identifikatorer som inneholder flere ord, bรธr visuelt skille hvert ord. For eksempel guru99_website ikke guru99website.

C++ Variabel erklรฆring og definisjon

En deklarasjon av en variabel gjรธr et navn kjent for programmet i det omfanget det er definert 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 inn C++

Anta at det er en variabel buffsize som angir antall innganger som skal tas fra brukeren. Her รธnsker vi ikke รฅ endre verdien av buffsize gjennom hele programmet. Vi รธnsker รฅ definere en variabel hvis verdi vi vet ikke skal endres.

I slike tilfeller bruker du nรธkkelordet const

const int bufSize = 512;    // input buffer size

Dette definerer bufSize som en konstant. Ethvert forsรธk pรฅ รฅ tilordne til eller endre bufSize gir en feil.

Her kan vi ikke endre verdien til et const-objekt etter at vi har opprettet det, det mรฅ vรฆre obligatorisk deklareres og initialiseres. Ellers gir kompilatoren en feil.

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 av variabler i C++

Et omfang er et spenn av et program der en variabel har en betydning. Stort sett kan det samme navnet brukes for รฅ referere til forskjellige enheter innenfor forskjellige omfang. Variabler er synlige fra punktet der de er deklarert til slutten av omfanget der deklarasjonen deres 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 programmet definerer 3 navn, nemlig, hoved, sum og val. Den bruker navneomrรฅdet std, sammen med to andre navn fra det navnerommet - cout og endl.

  • Funksjonsnavnet "main" er definert utenfor de krรธllede klammeparentesene. Funksjonsnavnet hoved โ€“ som de fleste andre navn definert utenfor en funksjon โ€“ har et globalt omfang. Hvilket betyr at nรฅr de er erklรฆrt, navn som er pรฅ globalt omfang er tilgjengelig gjennom hele programmet.
  • Den variable summen er definert innenfor rammen av blokken som er kroppen til hovedfunksjonen. Den kan nรฅs fra erklรฆringspunktet og gjennom resten av hovedfunksjonens kropp. Imidlertid ikke utenfor det. Dette betyr at variabel sum har blokkere omfang.
  • Variabelen val er definert i omfanget av "for uttalelse". Det kan enkelt brukes i den uttalelsen, men ikke andre steder i hovedfunksjonen. Det har det lokalt omfang.

Nestet omfang

Omfanget kan inneholde andre omfang. Det inneholdte (eller nestede) omfanget refereres til som et indre omfang. Det inneholdende omfanget er det ytre omfanget.

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

Utgang #1 vises fรธr den lokale definisjonen av gjenbrukt. Dermed denne utgangen

setningen er den som bruker navnet gjenbrukt som er definert i globalt omfang. Denne uttalelsen gir utgang

42 0

Utgang #2 oppstรฅr etter den lokale definisjonen av gjenbrukt. Det er nรฅ i omfang. Derfor bruker denne andre utdatasetningen ganske enkelt det lokale objektet kalt gjenbrukt i stedet for globalt og utdata

0 0

Utgang #3 overstyrer standard scoping-reglene ved รฅ bruke scope operatรธr. Det globale omfanget har ikke noe navn. Sรฅledes, nรฅr scope-operatรธren(::) har en tom venstre side. Den tolker det som en forespรธrsel om รฅ hente navnet pรฅ hรธyre side av det globale omfanget. Dermed bruker uttrykket globale gjenbruk og utdata

42 0

Variabel Typekonvertering

En variabel av en type kan konverteres til en annen. Det er kjent som "Typekonvertering." La oss se reglene for รฅ konvertere annerledes C++ variabeltyper:

Tilordning av ikke-bool til en bool-variabel gir false hvis verdien er 0 og sann ellers.

bool b = 42;            // b is true

Tilordning av en bool til en av de andre aritmetikktypene gir 1 hvis boolen er sann og 0 hvis boolen er usann.

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

ร… tilordne en flyttallsverdi til en variabel av int-typen gir verdien som avkortes. Verdien som er lagret er delen fรธr desimaltegnet.

int i = 3.14;               // i has value 3

Tilordning av en int-verdi til en variabel av flytetype resulterer i at brรธkdelen blir null. Presisjon gรฅr vanligvis tapt hvis heltallet har flere biter enn den flytende variabelen kan romme.

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

Hvis vi prรธver รฅ tilordne en verdi utenfor omrรฅdet til en variabel av typen uten fortegn, er resultatet resten av verdien %(modulo)

For eksempel kan en 8-bits usignert tegntype inneholde verdier fra 0 til og med 255. ร… tilordne en verdi utenfor dette omrรฅdet vil resultere i at kompilatoren tildeler resten av den verdien modulo 256. Derfor, ved logikken ovenfor, gir tilordning av โ€“1 til et 8-bits usignert tegn det objektet verdien 255.

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

Hvis vi prรธver รฅ tilordne en verdi utenfor omrรฅdet til et objekt av fortegnstype, er resultatet uforutsigbart. Det er udefinert. Programmet kan se ut til รฅ fungere pรฅ utsiden, eller det kan krasje, eller det kan produsere sรธppelverdier.

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

Kompilatoren bruker den samme typen konverteringer nรฅr vi bruker en verdi av รฉn type der det forventes en verdi av en annen type.

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

Hvis denne verdien = 0, er betingelsen falsk; alle andre (ikke-null) verdier gir sanne. Etter det samme konseptet, nรฅr vi bruker en bool i et aritmetisk uttrykk, blir verdien alltid konvertert til enten 0 eller 1. Som et resultat er bruk av en bool i et aritmetisk uttrykk vanligvis nesten helt sikkert feil.

Forsiktig: Ikke bland signerte og usignerte typer

Uttrykk som blander fortegnet og usignert kan gi overraskende og feil resultater nรฅr fortegnsverdien er negativ. Som diskutert ovenfor blir signerte verdier automatisk konvertert til usignerte.

For eksempel i et aritmetisk uttrykk som

x* y

Hvis x er -1 og y er 1, og hvis bรฅde x og y er int, er verdien, som forventet, -1.

Hvis x er int og y er uten fortegn, avhenger verdien av dette uttrykket av hvor mange biter et heltall har pรฅ kompileringsmaskinen. Pรฅ vรฅr maskin gir dette uttrykket 4294967295.

Registrer variabler

Registervariabler er raskere รฅ fรฅ tilgang til sammenlignet med minnevariabler. Sรฅ, variabler som ofte brukes i en C++ program kan settes i registre ved hjelp av registrere nรธkkelord. Registernรธkkelordet forteller kompilatoren รฅ lagre den gitte variabelen i et register. Det er kompilatorens valg om den skal legges inn i et register eller ikke. Vanligvis gjรธr kompilatorer selv forskjellige optimaliseringer som inkluderer รฅ sette noen av variablene i registeret. Det er ingen begrensning pรฅ antall registervariabler i en C++ program. Men kompilatoren lagrer kanskje ikke variabelen i et register. Dette er fordi registerminnet er svรฆrt begrenset og vanligvis brukes av operativsystemet.

For รฅ definere:

register int i;

Kommentar

Kommentarer er delene av koden som blir ignorert av kompilatoren. Den lar programmereren lage notater i de relevante omrรฅdene av kildekoden/programmet. Kommentarer kommer enten i blokkform eller enkeltlinjer. Programkommentarene er begrunnelse. Det kan inkluderes i C++ kode som hjelper alle รฅ lese kildekoden. Alle programmeringssprรฅk tillater noen form for kommentarer. C++ stรธtter bรฅde enkeltlinje- og flerlinjekommentarer.

  • Enkeltlinjekommentarer er de som starter med // og fortsetter til slutten av linjen. Hvis det siste tegnet i en kommentarlinje er en \, vil kommentaren fortsette i neste linje.
  • Flerlinjers kommentarer er de som begynner med /* og slutter med */.
/* This is a comment */
/* C++ comments can  also 
* span multiple lines 
*/

Escape -sekvenser

Noen tegn, for eksempel backspace og kontrolltegn, har ikke noe synlig bilde. Slike tegn er kjent som ikke-utskrivbare tegn. Andre tegn (enkle og doble anfรธrselstegn, spรธrsmรฅlstegn og skrรฅstrek) har spesiell betydning i de mange programmeringssprรฅkene.

Programmene vรฅre kan ikke bruke noen av disse tegnene direkte. I stedet kan vi bruke en escape-sekvens for รฅ representere en slik rรธye. En rรธmningssekvens begynner med en omvendt skrรฅstrek.

Ocuco C++ programmeringssprรฅk definerer flere escape-sekvenser:

Hva gjรธr den? Character
Ny linje \n
Vertikal fane \v
backslash \\
Vognretur \r
Horisontal fane \t
Backspace \b
Spรธrsmรฅlstegn \?
Formfeed \f
Varsel (bjelle) \a
Double sitere \ โ€
Enkelt sitat \ '

Vi bruker 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 generaliserte escape-sekvenser \x etterfulgt av ett eller flere heksadesimale sifre. Eller vi bruker en \ etterfulgt av ett, eller to eller tre oktale sifre. Den generaliserte escape-sekvensen representerer den numeriske verdien til tegnet. Noen eksempler (forutsatt Latin-1-tegnsettet):

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

Vi kan bruke forhรฅndsdefinerte escape-sekvenser, ettersom vi bruker alle andre tegn.

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

Sammendrag

  • A C++ variabel gir oss en navngitt lagringskapasitet.
  • C++ variabeltyper: int, double, chariot, flyte, streng, bool, etc.
  • Det inneholdte (eller nestede) omfanget refereres til som et indre omfang, og det inneholdende omfanget er det ytre omfanget.
  • En variabel av en type kan konverteres til en annen. Det er kjent som "Typekonvertering."
  • Registervariabler er raskere รฅ fรฅ tilgang til sammenlignet med minnevariabler.
  • Kommentarer er delene av koden som blir ignorert av kompilatoren.
  • Noen tegn, for eksempel backspace og kontrolltegn, har ikke noe synlig bilde.

Oppsummer dette innlegget med: