C ++ variabler og typer: int, double, char, string, bool

Innholdsfortegnelse:

Anonim

Variabler i C ++

En C ++ -variabel gir oss en navngitt lagringsfunksjon. Det lar programmereren manipulere data etter behov. Hver variabel har en type i C ++. Variabeltypen hjelper til med å bestemme størrelsen og utformingen av variabelens minnekart, verdiområdet som kan lagres i det minnet, og settet med operasjoner som kan brukes på det.

I denne C ++ opplæringen vil du lære:

  • Variabler i C ++
  • Grunnleggende typer variabler i C ++
  • Regler for deklarering av variabler i C ++
  • C ++ Variable datatyper
  • Variabelt navn eller identifikatorer
  • Const Qualifier i C ++
  • Omfanget av variabler i C ++
  • Konvertering av variabel type
  • Registrer variabler
  • Escape-sekvenser

Grunnleggende typer variabler i C ++

Her er de grunnleggende typene C ++ -variabler:

Int:

Et helt tall er en numerisk bokstav (assosiert med tall) uten noen brøk eller eksponentiell del. Eksempel. 120, -90, etc.

Dobbelt:

Det er en flytende punktverdi med dobbelt presisjon. Eksempel: 11.22, 2.345

Char:

En bokstavelig karakter skapes ved å legge inn et enkelt tegn i enkle anførselstegn. For eksempel: 'a', 'm', 'F', 'P', '}' etc.

Flyte:

En flytende punkt bokstavelig er en numerisk bokstav som enten har en brøkform eller en eksponentform. For eksempel: 1.3, 2.6

Strenglitteratur:

En streng bokstavelig er en sekvens av tegn som er omsluttet av dobbelt anførselstegn. For eksempel: "Hvordan har du det?"

Bool:

Det holder boolsk verdi sant eller usant.

Regler for deklarering av variabler i C ++

Her er noen vanlige regler for å navngi en variabel:

  • Et C ++ variabelnavn kan bare ha alfabet, tall og understreking.
  • Et C ++ variabelnavn kan ikke begynne med et tall.
  • Variable navn skal ikke begynne med store bokstaver.
  • Et variabelnavn som brukes i C ++ kan ikke være et nøkkelord. For eksempel er int et nøkkelord som brukes til å betegne heltall.
  • Et C ++ variabelnavn kan starte med en understreking. Imidlertid er det ikke ansett som en god praksis.

C ++ Variable datatyper

C ++ definerer et helt sett med primitive typer

Det tomrommet typen har ingen tilknyttede verdier med det, og kan brukes i bare noen få tilfeller. Det er oftest som returtype av funksjoner som ikke returnerer en verdi.

De aritmetiske typene inkluderer tegn, heltall, boolske verdier og flytende tall. Aritmetisk type hvis ytterligere delt inn i 2 kategorier

  1. Flytepunktstyper . Flyte (eller flytende type) representerer desimaltall. IEEE-standarden spesifiserer et minimum antall signifikante sifre. De fleste kompilatorer gir vanligvis mer presisjon enn det angitte minimumet. Vanligvis er flottører representert med 32bits, dobler i 64 bits og lange dobler i enten 96 eller 128 bits.
  2. Integrerte typer (som inkluderer tegn, heltall og boolske typer). Den boolske typen har bare to typer verdier: sant eller usant. Det er flere røyetyper , hvorav de fleste finnes for å støtte internasjonalisering. Den mest grunnleggende karaktertypen er røye. En røye har samme størrelse som en enkelt maskinbyte som betyr en enkelt byte.

De Integral typer kan være signert eller.

Signert type : De representerer negative eller positive tall (inkludert null). I en signert type må området være jevnt fordelt mellom + ve- og -ve-verdiene. Dermed vil en 8-bits signert røye ha verdier fra -127 til 127.

Unsignert type : I en usignert type er alle verdier> = 0. En 8-biters usignert røye kan inneholde 0 til 255 (begge inkludert).

Variabelt navn eller identifikatorer

Identifikatorer kan være sammensatt av noen bokstaver, sifre og understrekingstegnet eller en kombinasjon av dem. Det er ikke satt noen grense for navnelengden.

Identifikatorer må

  • begynn med enten en bokstav eller en understreking ('_').
  • Og er store og små bokstaver; store og små bokstaver er forskjellige:

// definerer fire forskjellige int-variabler

int guru99, gurU99, GuRu99, GURU99;

C ++ - språket har reservert noen navn for bruk.

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 indikasjon på betydningen.
  • Variable navn er vanligvis små bokstaver-guru99, ikke Guru99 eller GURU99.
  • Klassene vi definerer, begynner vanligvis med en stor bokstav.
  • Identifikatorer som inneholder flere ord, skal skille hvert ord visuelt. For eksempel guru99_website ikke guru99website.

C ++ variabel erklæring og definisjon

En erklæring om en variabel gjør navnet kjent for programmet i omfanget det er definert 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 ++

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

I så fall bruker du nøkkelordet const

const int bufSize = 512; // input buffer size

Dette definerer bufSize som en konstant. Ethvert forsøk på å tilordne 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 deklarert og initialisert. Ellers kaster kompilatoren en feil.

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

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

  • Funksjonsnavnet "hoved" er definert utenfor krøllete bukseseler. Funksjonsnavnet som de fleste andre navn definert utenfor en funksjon, har et globalt omfang. Noe som er globalt tilgjengelig når det er erklært, er tilgjengelig gjennom hele programmet.
  • Den variable summen er definert innenfor rammen av blokken, som er hovedfunksjonens hoveddel. Det er tilgjengelig fra erklæringspunktet og gjennom resten av hovedfunksjonens kropp. Imidlertid ikke utenfor det. Dette betyr at variabel sum har blokkomfang .
  • Variabelen val er definert i omfanget av "for uttalelse". Den kan enkelt brukes i den uttalelsen, men ikke andre steder i hovedfunksjonen. Det har lokalt omfang .

Nestet omfang

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

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

Utgang nr. 1 vises før den lokale definisjonen av gjenbruk. Dermed denne utgangen

uttalelse er den som bruker navnet gjenbrukt som er definert i globalt omfang. Denne uttalelsen gir utganger

42 0

Utgang 2 oppstår etter den lokale definisjonen av gjenbruk. Det er nå i omfang. Derfor bruker denne andre utdatauttalelsen ganske enkelt det lokale objektet som heter gjenbrukt i stedet for globalt og utganger

0 0

Utgang 3 overstyrer standardregistreringsreglene ved bruk av omfangsoperatøren. Det globale omfanget har ikke noe navn. Dermed når omfangsoperatø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 det globale gjenbruk og utdata

42 0

Konvertering av variabel type

En variabel av en type kan konverteres til en annen. Det er kjent som "Type Conversion." La oss se reglene for konvertering av forskjellige C ++ variabeltyper:

Tildeling av ikke-bool til en bool-variabel gir falsk hvis verdien er 0 og ellers sant.

bool b = 42; // b is true

Å tilordne en bool til en av de andre aritmetiske typene gir 1 hvis boolen er sann og 0 hvis boolen er falsk.

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

Å tildele en flytende verdi til en variabel av int-typen gir verdien som er avkortet. Verdien som er lagret er delen før desimaltegnet.

int i = 3.14; // i has value 3

Tildeling 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 usignert type, er resultatet resten av verdien% (modulo)

For eksempel kan en 8-biters usignert røye-type inneholde verdier fra 0 til 255, inkludert. Å tildele en verdi utenfor dette området vil resultere i at kompilatoren tilordner resten av den verdien modulo 256. Derfor, ved hjelp av logikken ovenfor, vil tildeling av -1 til en 8-biters usignert tegn gi objektet verdien 255.

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

Hvis vi prøver å tilordne en verdi utenfor rekkevidden til et objekt av signert type, er resultatet uforutsigbart. Det er udefinert. Programmet ser 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 samme type konverteringer når vi bruker en verdi av en type der det forventes en verdi av en annen type.

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

Hvis denne verdien = 0, er betingelsen falsk; alle andre (ikke-null) verdier gir sant. Med 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 sikkert feil.

Forsiktig: Ikke bland signerte og usignerte typer

Uttrykk som blander signert og usignert kan gi overraskende og gale resultater når den signerte verdien er negativ. Som diskutert ovenfor konverteres signerte verdier automatisk 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 ikke er signert, 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 tilgjengelig enn minnevariabler. Så variabler som ofte brukes i et C ++ - program kan settes i registre ved hjelp av registernøkkelord . Registeret nøkkelordet ber kompilatoren om å lagre den gitte variabelen i et register. Det er kompilatorens valg om å sette det i et register eller ikke. Generelt gjør kompilatorene forskjellige optimaliseringer som inkluderer å sette noen av variablene i registeret. Det er ingen begrensning på antall registervariabler i et C ++ - program. Men kompilatoren kan ikke lagre variabelen i et register. Dette er fordi registerminnet er veldig begrenset og vanligvis brukes av operativsystemet.

Å definere:

register int i;

Kommentarer

Kommentarer er delene av koden som ignoreres av kompilatoren. Det lar programmereren lage notater i de aktuelle områdene av kildekoden / programmet. Kommentarer kommer enten i blokkform eller enkeltlinjer. Programkommentarene er forklarende uttalelser. Den kan inkluderes i C ++ - koden som hjelper alle som leser kildekoden. Alle programmeringsspråk tillater noen form for kommentarer. C ++ støtter både enkeltlinjekommentarer og flerlinjekommentarer.

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

Escape-sekvenser

Noen tegn, for eksempel tilbaketast 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 tilbakeslag) har spesiell betydning i de mange programmeringsspråkene.

Våre programmer kan ikke bruke noen av disse tegnene direkte. I stedet kan vi bruke en rømningssekvens for å representere en slik røye. En rømningssekvens begynner med en tilbakeslag.

Programmeringsspråket C ++ definerer flere rømningssekvenser:

Hva gjør den?

Karakter

Ny linje

\ n

Vertikal fane

\ v

Backslash

\\

Vognretur

\ r

Horisontal fane

\ t

Backspace

\ b

Spørsmålstegn

\?

Formfeed

\ f

Varsel (bjelle)

\en

Dobbelt sitat

\ "

Enkelt tilbud

\ '

Vi bruker en rømningssekvens 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 generaliserte rømningssekvenser \ x etterfulgt av en eller flere heksadesimale sifre. Eller vi bruker en \ etterfulgt av en, eller to eller tre oktale sifre. Den generelle rømningssekvensen representerer den numeriske verdien til tegnet. Noen eksempler (forutsatt at Latin-1-tegnsettet):

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

Vi kan bruke forhåndsdefinerte rømningssekvenser, ettersom vi bruker andre tegn.

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

Sammendrag

  • En C ++ -variabel gir oss en navngitt lagringsfunksjon.
  • C ++ variabeltyper: int, double, char, float, string, bool, etc.
  • Det inneholdte (eller nestede) omfanget blir referert til som et indre omfang, og det inneholder omfanget er det ytre omfanget.
  • En variabel av en type kan konverteres til en annen. Det er kjent som "Type Conversion."
  • Registervariabler er raskere tilgjengelig enn minnevariabler.
  • Kommentarer er delene av koden som ignoreres av kompilatoren.
  • Noen tegn, for eksempel tilbaketast og kontrolltegn, har ikke noe synlig bilde.