Variabili e tipi C ++: int, double, char, string, bool

Sommario:

Anonim

Variabili in C ++

Una variabile C ++ ci fornisce una capacità di archiviazione con nome. Consente al programmatore di manipolare i dati secondo le necessità. Ogni variabile ha un tipo in C ++. Il tipo di variabile aiuta a determinare la dimensione e il layout della mappa di memoria della variabile, l'intervallo di valori che possono essere memorizzati all'interno di quella memoria e l'insieme di operazioni che possono essere applicate ad essa.

In questo tutorial C ++ imparerai:

  • Variabili in C ++
  • Tipi di base di variabili in C ++
  • Regole di dichiarazione delle variabili in C ++
  • Tipi di dati variabili C ++
  • Nome variabile o identificatori
  • Const Qualifier in C ++
  • Ambito delle variabili in C ++
  • Conversione di tipo variabile
  • Registra variabili
  • Sequenze di escape

Tipi di base di variabili in C ++

Ecco i tipi base di variabili C ++:

Int:

Un numero intero è un letterale numerico (associato a numeri) senza parti frazionarie o esponenziali. Esempio. 120, -90, ecc.

Doppio:

È un valore in virgola mobile a doppia precisione. Esempio: 11.22, 2.345

Char:

Un carattere letterale viene creato racchiudendo un singolo carattere tra virgolette singole. Ad esempio: "a", "m", "F", "P", "}" ecc.

Galleggiante:

Un valore letterale a virgola mobile è un valore letterale numerico che ha una forma frazionaria o una forma esponente. Ad esempio: 1.3, 2.6

Valori letterali stringa:

Una stringa letterale è una sequenza di caratteri racchiusi tra virgolette doppie. Ad esempio: "Come stai?"

Bool:

Contiene il valore booleano vero o falso.

Regole di dichiarazione delle variabili in C ++

Di seguito sono riportate alcune regole comuni per denominare una variabile:

  • Un nome di variabile C ++ può contenere solo alfabeti, numeri e trattino basso.
  • Il nome di una variabile C ++ non può iniziare con un numero.
  • I nomi delle variabili non devono iniziare con un carattere maiuscolo.
  • Un nome di variabile utilizzato in C ++ non può essere una parola chiave. Ad esempio, int è una parola chiave utilizzata per denotare numeri interi.
  • Il nome di una variabile C ++ può iniziare con un trattino basso. Tuttavia, non è considerata una buona pratica.

Tipi di dati variabili C ++

C ++ definisce un intero insieme di tipi primitivi

Il tipo void non ha valori associati e può essere utilizzato solo in poche circostanze. È più comunemente come il tipo restituito di funzioni che non restituiscono un valore.

I tipi aritmetici includono caratteri, numeri interi, valori booleani e numeri in virgola mobile. Tipo aritmetico se ulteriormente suddiviso in 2 categorie

  1. Tipi in virgola mobile . Il float (o il tipo floating) rappresenta i numeri decimali. Lo standard IEEE specifica un numero minimo di cifre significative. La maggior parte dei compilatori di solito fornisce una precisione maggiore del minimo specificato. Tipicamente, i float sono rappresentati a 32 bit, i doppi a 64 bit e i doppi lunghi a 96 o 128 bit.
  2. Tipi integrali (che includono caratteri, numeri interi e tipi booleani). Il tipo booleano ha solo due tipi di valori: True o False. Esistono diversi tipi di caratteri , molti dei quali esistono per supportare l'internazionalizzazione. Il tipo di carattere più elementare è char. Un carattere ha la stessa dimensione di un singolo byte macchina, ovvero un singolo byte.

I tipi integrali possono essere firmati o non firmati.

Tipo con segno : rappresentano numeri negativi o positivi (compreso lo zero). In un tipo con segno, l'intervallo deve essere diviso equamente tra i valori + ve e -ve. Pertanto, un carattere con segno a 8 bit conterrà valori compresi tra -127 e 127.

Tipo senza segno: in un tipo senza segno, tutti i valori sono> = 0. Un carattere senza segno a 8 bit può contenere da 0 a 255 (entrambi inclusi).

Nome variabile o identificatori

Gli identificatori possono essere composti da alcune lettere, cifre e dal carattere di sottolineatura o da una combinazione di essi. Nessun limite è imposto alla lunghezza del nome.

Gli identificatori devono

  • iniziare con una lettera o un trattino basso ("_").
  • E fanno distinzione tra maiuscole e minuscole; le lettere maiuscole e minuscole sono distinte:

// definisce quattro diverse variabili int

int guru99, gurU99, GuRu99, GURU99;

Il linguaggio C ++ ha riservato alcuni nomi per il suo utilizzo.

Esistono molte convenzioni accettate per la denominazione di variabili in diversi linguaggi di programmazione. Seguire queste convenzioni può migliorare la leggibilità del programma.

  • Un identificatore dovrebbe fornire almeno qualche indicazione del suo significato.
  • I nomi delle variabili sono generalmente minuscoli-guru99, non Guru99 o GURU99.
  • Le classi che definiamo di solito iniziano con una lettera maiuscola.
  • Gli identificatori che contengono più parole dovrebbero distinguere visivamente ogni parola. Ad esempio, guru99_website non guru99website.

Dichiarazione e definizione di variabili C ++

Una dichiarazione di una variabile rende noto un nome al programma nell'ambito in cui è definita. Esempio:

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

Const Qualifier in C ++

Supponiamo che ci sia una variabile buffsize che indica il numero di input da prendere dall'utente. Qui, non vogliamo cambiare il valore di buffsize in tutto il programma. Vogliamo definire una variabile il cui valore sappiamo non dovrebbe cambiare.

In tal caso, utilizza la parola chiave const

const int bufSize = 512; // input buffer size

Questo definisce bufSize come una costante. Qualsiasi tentativo di assegnare o modificare bufSize restituisce un errore.

Qui, non possiamo cambiare il valore di un oggetto const dopo averlo creato, deve essere dichiarato e inizializzato obbligatoriamente. In caso contrario, il compilatore genera un errore.

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

Ambito delle variabili in C ++

Uno scope è un intervallo di un programma in cui una variabile ha un significato. Per lo più lo stesso nome può essere utilizzato per fare riferimento a entità diverse all'interno di ambiti diversi. Le variabili sono visibili dal punto in cui sono dichiarate fino alla fine dell'ambito in cui appare la loro dichiarazione.

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

Questo programma definisce 3 nomi, vale a dire, principale, somma e val. Usa il nome dello spazio dei nomi std, insieme ad altri due nomi da quello spazio dei nomi-cout ed endl.

  • Il nome della funzione "main" è definito al di fuori delle parentesi graffe. Il nome della funzione main, come la maggior parte degli altri nomi definiti al di fuori di una funzione, ha un ambito globale. Ciò significa che una volta dichiarati, i nomi che sono nell'ambito globale sono accessibili in tutto il programma.
  • La somma della variabile è definita nell'ambito del blocco che è il corpo della funzione principale. È possibile accedervi dal suo punto di dichiarazione e in tutto il resto del corpo della funzione principale. Tuttavia, non al di fuori di esso. Ciò significa che la somma della variabile ha un ambito di blocco .
  • La variabile val è definita nell'ambito di "for statement". Può essere facilmente utilizzato in quell'istruzione ma non altrove nella funzione principale. Ha portata locale .

Ambito annidato

L'ambito può contenere altri ambiti. L'ambito contenuto (o annidato) viene definito ambito interno. L'ambito contenitore è l'ambito esterno.

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

L'output n. 1 viene visualizzato prima della definizione locale di riutilizzato. Quindi, questo output

L'istruzione è quella che utilizza il nome riutilizzato definito nell'ambito globale. Questa istruzione restituisce

42 0

L'output n. 2 si verifica dopo la definizione locale di riutilizzato. Ora è nell'ambito. Pertanto, questa seconda istruzione di output utilizza semplicemente l'oggetto locale denominato riutilizzato anziché quello globale e gli output

0 0

L'output n. 3 sostituisce le regole di definizione dell'ambito predefinite utilizzando l'operatore di ambito. L'ambito globale non ha nome. Pertanto, quando l'operatore di ambito (: :) ha un lato sinistro vuoto. Lo interpreta come una richiesta per recuperare il nome sul lato destro dell'ambito globale. Pertanto, l'espressione utilizza il globale riutilizzato e gli output

42 0

Conversione di tipo variabile

Una variabile di un tipo può essere convertita in un'altra. È noto come "conversione del tipo". Vediamo le regole per convertire diversi tipi di variabili C ++:

L'assegnazione di non-bool a una variabile bool restituisce false se il valore è 0 e true in caso contrario.

bool b = 42; // b is true

L'assegnazione di un valore bool a uno degli altri tipi aritmetici restituisce 1 se bool è vero e 0 se bool è falso.

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

L'assegnazione di un valore a virgola mobile a una variabile di tipo int produce il valore che viene troncato. Il valore memorizzato è la parte prima del punto decimale.

int i = 3.14; // i has value 3

L'assegnazione di un valore int a una variabile di tipo float fa sì che la parte frazionaria diventi zero. La precisione viene solitamente persa se il numero intero ha più bit di quelli che la variabile mobile può contenere.

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

Se proviamo ad assegnare un valore fuori intervallo a una variabile di tipo senza segno, il risultato è il resto del valore% (modulo)

Ad esempio, un tipo di carattere senza segno a 8 bit può contenere valori compresi tra 0 e 255, inclusi. Assegnando un valore al di fuori di questo intervallo, il compilatore assegnerà il resto di quel valore modulo 256. Pertanto, secondo la logica precedente, l'assegnazione di -1 a un carattere senza segno a 8 bit dà a quell'oggetto il valore 255.

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

Se proviamo ad assegnare un valore fuori intervallo a un oggetto di tipo con segno, il risultato è imprevedibile. Non è definito. Il programma potrebbe sembrare funzionare all'esterno, o potrebbe bloccarsi o potrebbe produrre valori inutili.

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

Il compilatore applica lo stesso tipo di conversioni quando usiamo un valore di un tipo in cui è previsto un valore di altro tipo.

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

Se questo valore = 0, la condizione è falsa; tutti gli altri valori (diversi da zero) restituiscono true. Con lo stesso concetto, quando usiamo un bool in un'espressione aritmetica, il suo valore viene sempre convertito in 0 o 1. Di conseguenza, l'uso di un bool in un'espressione aritmetica di solito è quasi sicuramente errato.

Attenzione: non mischiare tipi firmati e non firmati

Le espressioni che mischiano firmato e non firmato possono produrre risultati sorprendenti e sbagliati quando il valore con segno è negativo. Come discusso in precedenza, i valori con segno vengono convertiti automaticamente in non firmati.

Ad esempio, in un'espressione aritmetica come

x* y

Se x è -1 e y è 1, e se sia x che y sono int, il valore è, come previsto, -1.

Se x è int e y sono senza segno, il valore di questa espressione dipende da quanti bit ha un intero sulla macchina che compila. Sulla nostra macchina, questa espressione restituisce 4294967295.

Registra variabili

L'accesso alle variabili dei registri è più rapido rispetto alle variabili di memoria. Quindi, le variabili che sono usate frequentemente in un programma C ++ possono essere inserite nei registri usando la parola chiave register . La parola chiave register dice al compilatore di memorizzare la variabile data in un registro. È la scelta del compilatore se metterlo in un registro o meno. Generalmente, i compilatori stessi eseguono varie ottimizzazioni che includono l'inserimento di alcune variabili nel registro. Non c'è limite al numero di variabili di registro in un programma C ++. Ma il compilatore potrebbe non memorizzare la variabile in un registro. Questo perché la memoria dei registri è molto limitata ed è generalmente utilizzata dal sistema operativo.

Definire:

register int i;

Commenti

I commenti sono le parti del codice ignorate dal compilatore. Consente al programmatore di prendere appunti nelle aree pertinenti del codice / programma sorgente. I commenti possono essere in blocco o singole righe. I commenti del programma sono dichiarazioni esplicative. Può essere incluso nel codice C ++ che aiuta chiunque a leggere il suo codice sorgente. Tutti i linguaggi di programmazione consentono una qualche forma di commenti. C ++ supporta commenti sia su una riga che su più righe.

  • I commenti su una riga sono quelli che iniziano con // e continuano fino alla fine della riga. Se l'ultimo carattere in una riga di commento è \, il commento continuerà nella riga successiva.
  • I commenti su più righe sono quelli che iniziano con / * e finiscono con * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Sequenze di escape

Alcuni caratteri, come backspace e caratteri di controllo, non hanno un'immagine visibile. Tali caratteri sono noti come caratteri non stampabili. Altri caratteri (virgolette singole e doppie, punto interrogativo e barra rovesciata) hanno un significato speciale nei molti linguaggi di programmazione.

I nostri programmi non sono in grado di utilizzare direttamente nessuno di questi caratteri. Invece, possiamo usare una sequenza di escape per rappresentare tale carattere. Una sequenza di escape inizia con una barra rovesciata.

Il linguaggio di programmazione C ++ definisce diverse sequenze di escape:

Che cosa fa?

Personaggio

Nuova linea

\ n

Scheda verticale

\ v

Barra rovesciata

\\

Ritorno in carrozza

\ r

Tabulazione orizzontale

\ t

Backspace

\ b

Punto interrogativo

\?

Formfeed

\ f

Allerta (campanello)

\un

Virgolette doppie

\ "

Virgoletta singola

\ '

Usiamo una sequenza di escape come se fosse un singolo carattere:

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

Possiamo anche scrivere sequenze di escape generalizzate \ x seguite da una o più cifre esadecimali. Oppure usiamo una \ seguita da una, due o tre cifre ottali. La sequenza di escape generalizzata rappresenta il valore numerico del carattere. Alcuni esempi (assumendo il set di caratteri Latin-1):

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

Possiamo usare sequenze di escape predefinite, poiché stiamo usando qualsiasi altro carattere.

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

Sommario

  • Una variabile C ++ ci fornisce una capacità di archiviazione con nome.
  • Tipi di variabili C ++: int, double, char, float, string, bool, ecc.
  • L'ambito contenuto (o annidato) viene definito ambito interno e l'ambito contenitore è l'ambito esterno.
  • Una variabile di un tipo può essere convertita in un'altra. È noto come "conversione del tipo".
  • L'accesso alle variabili dei registri è più rapido rispetto alle variabili di memoria.
  • I commenti sono le parti del codice ignorate dal compilatore.
  • Alcuni caratteri, come backspace e caratteri di controllo, non hanno un'immagine visibile.