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

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

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

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.