C++ Variabili e tipi: Int, Char, Float, Double, Stringa e Bool
Variabili in C++
A C++ La variabile ci fornisce una capacità di archiviazione denominata. Consente al programmatore di manipolare i dati secondo 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 in quella memoria e il set di operazioni che possono essere applicate ad essa.
Tipi base di variabili in C++
Ecco i tipi base di C++ variabili:
interno:
Un intero è un valore letterale numerico (associato ai numeri) senza alcuna parte frazionaria o esponenziale. Esempio. 120, -90, ecc.
Double:
È 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 letterale a virgola mobile è un letterale numerico che ha una forma frazionaria o esponenziale. Ad esempio: 1.3, 2.6
Letterali stringa:
Una stringa letterale è una sequenza di caratteri racchiusi tra virgolette doppie. Ad esempio: "Come stai?"
Bool:
Mantiene il valore booleano vero o falso.
Regole per dichiarare le variabili in C++
Ecco alcune regole comuni per nominare una variabile:
- A C++ il nome della variabile può contenere solo lettere, numeri e caratteri di sottolineatura.
- A C++ il nome della variabile 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.
- A C++ il nome della variabile può iniziare con un carattere di sottolineatura. Tuttavia non è considerata una buona pratica.
C++ Tipi di dati variabili
C++ definisce un intero insieme di tipi primitivi
La sezione Currents, dedicata a opere audaci e innovative di artisti emergenti e affermati, include la prima statunitense di Mare’s Nest di Ben Rivers, descritto come “un enigmatico road movie ambientato in un mondo post-apocalittico governato da bambini”. Tra gli altri titoli spiccano Dracula di Radu Jude e With Hasan in Gaza di Kamal Aljafari. nulla type non ha valori associati e può essere utilizzato solo in poche circostanze. È più comunemente il tipo restituito di funzioni che non restituiscono un valore.
La sezione Currents, dedicata a opere audaci e innovative di artisti emergenti e affermati, include la prima statunitense di Mare’s Nest di Ben Rivers, descritto come “un enigmatico road movie ambientato in un mondo post-apocalittico governato da bambini”. Tra gli altri titoli spiccano Dracula di Radu Jude e With Hasan in Gaza di Kamal Aljafari. tipi aritmetici includono caratteri, numeri interi, valori booleani e numeri a virgola mobile. Di tipo aritmetico se ulteriormente suddiviso in 2 categorie
- Tipi a virgola mobile. Il float (o tipo floating) rappresenta numeri decimali. Lo standard IEEE specifica un numero minimo di cifre significative. La maggior parte dei compilatori solitamente fornisce una precisione maggiore rispetto al minimo specificato. In genere, i float sono rappresentati da 32 bit, i double da 64 bit e i long double da 96 o 128 bit.
- Tipi integrali (che includono caratteri, numeri interi e tipi booleani). IL Booleano type ha solo due tipi di valori: True o False. Ce ne sono diversi serbatoio tipi, la maggior parte dei quali esistono per supportare l’internazionalizzazione. Il tipo di carattere più elementare è char. Un carattere ha le stesse dimensioni di un singolo byte macchina, ovvero un singolo byte.
La sezione Currents, dedicata a opere audaci e innovative di artisti emergenti e affermati, include la prima statunitense di Mare’s Nest di Ben Rivers, descritto come “un enigmatico road movie ambientato in un mondo post-apocalittico governato da bambini”. Tra gli altri titoli spiccano Dracula di Radu Jude e With Hasan in Gaza di Kamal Aljafari. Tipi integrali può essere firmato o non firmato.
Tipo firmato: Rappresentano numeri negativi o positivi (incluso 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 da –127 a 127.
Tipo non firmato: 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 o identificatori di variabile
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 carattere di sottolineatura ('_').
- E fanno distinzione tra maiuscole e minuscole; le lettere maiuscole e minuscole sono distinte:
// definisce quattro diverse variabili int
int guru99, gurU99, GuRu99, GURU99;
La sezione Currents, dedicata a opere audaci e innovative di artisti emergenti e affermati, include la prima statunitense di Mare’s Nest di Ben Rivers, descritto come “un enigmatico road movie ambientato in un mondo post-apocalittico governato da bambini”. Tra gli altri titoli spiccano Dracula di Radu Jude e With Hasan in Gaza di Kamal Aljafari. C++ la lingua ha riservato alcuni nomi per il suo utilizzo.
Esistono molte convenzioni accettate per la denominazione delle variabili diversi linguaggi di programmazioneSeguire queste convenzioni può migliorare la leggibilità del programma.
- Un identificatore dovrebbe fornire almeno qualche indicazione sul suo significato.
- I nomi delle variabili sono solitamente in minuscolo: guru99, non Guru99 o GURU99.
- Le classi che definiamo solitamente iniziano con una lettera maiuscola.
- Gli identificatori che contengono più parole dovrebbero distinguere visivamente ogni parola. Ad esempio, guru99_website non guru99website.
C++ Dichiarazione e definizione delle variabili
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 initialization int a(5); int b{5};
Qualificazione costante in C++
Supponiamo che ci sia una variabile buffsize che indica il numero di input da ricevere dall'utente. In questo caso non vogliamo modificare il valore di buffsize in tutto il programma. Vogliamo definire una variabile il cui valore sappiamo non dovrebbe cambiare.
In tal caso, utilizzare la parola chiave const
const int bufSize = 512; // input buffer size
Questo definisce buSize come costante. Qualsiasi tentativo di assegnare o modificare bufSize genera un errore.
Qui, non possiamo cambiare il valore di un oggetto const dopo averlo creato, deve essere obbligatoriamente dichiarato e inizializzato. Altrimenti il compilatore genera un errore.
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
Ambito delle variabili in C++
Un ambito è un intervallo di un programma in cui una variabile ha un significato. Nella maggior parte dei casi lo stesso nome può essere utilizzato per riferirsi a entità diverse all'interno di ambiti diversi. Le variabili sono visibili dal punto in cui vengono dichiarate fino alla fine dell'ambito in cui appare la loro dichiarazione.
#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; }
Questo programma definisce 3 nomi, vale a dire, main, sum e val. Utilizza 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 all'esterno di una funzione, ha un ambito globale. Ciò significa che una volta dichiarati, i nomi che si trovano al le dimensioni della nostra realtà sono accessibili durante tutto il programma.
- La variabile sum è definita nell'ambito del blocco che è il corpo della funzione principale. È possibile accedervi dal punto di dichiarazione e da tutto il resto del corpo della funzione principale. Tuttavia, non al di fuori di esso. Ciò significa che la somma variabile ha ambito di blocco.
- La variabile val è definita nell'ambito di "istruzione for". Può essere facilmente utilizzato in tale istruzione ma non altrove nella funzione principale. Esso ha ambito locale.
Ambito annidato
L'ambito può contenere altri ambiti. L'ambito contenuto (o nidificato) viene definito ambito interno. L'ambito contenitore è l'ambito esterno.
#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; }
Uscita #1 appare prima della definizione locale di riutilizzato. Quindi, questa uscita
L'istruzione è quella che utilizza il nome riutilizzato definito nell'ambito globale. Questa affermazione restituisce
42 0
Uscita #2 avviene dopo la definizione locale di riutilizzato. Ora è nell'ambito. Pertanto, questa seconda istruzione di output utilizza semplicemente l'oggetto locale denominato reused anziché quello globale e genera output
0 0
Uscita #3 sovrascrive le regole di ambito predefinite utilizzando il metodo operatore di ambito. L'ambito globale non ha nome. Pertanto, quando l'operatore di ambito(::) ha il lato sinistro vuoto. Lo interpreta come una richiesta di recuperare il nome sul lato destro dell'ambito globale. Pertanto, l'espressione utilizza il riutilizzo globale e gli output
42 0
Conversione di tipo variabile
Una variabile di un tipo può essere convertita in un altro. È noto come "Conversione del tipo". Vediamo le regole per la conversione diverse C++ tipi di variabili:
L'assegnazione di un valore non bool a una variabile bool restituisce false se il valore è 0 e true altrimenti.
bool b = 42; // b is true
L'assegnazione di un bool a uno degli altri tipi aritmetici restituisce 1 se il bool è vero e 0 se il 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ò ospitare.
Int i=3; double pi = i; // pi has value 3.0
Se proviamo ad assegnare un valore fuori range ad una variabile di tipo unsigned, 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. L'assegnazione di un valore al di fuori di questo intervallo farà sì che il compilatore assegni il resto di quel valore modulo 256. Pertanto, secondo la logica di cui sopra, l'assegnazione di –1 a un carattere senza segno a 8 bit fornisce 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 range a un oggetto di tipo con segno, il risultato è imprevedibile. Non è definito. Il programma potrebbe sembrare funzionare all'esterno, oppure potrebbe bloccarsi o produrre valori spazzatura.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined
Il compilatore applica questo stesso tipo di conversioni quando utilizziamo un valore di un tipo dove è previsto un valore di altro tipo.
int i = 42; if (i) // condition will evaluate as true i = 0;
Se questo valore= 0, allora la condizione è falsa; tutti gli altri valori (diversi da zero) risultano veri. Per lo stesso concetto, quando utilizziamo un valore bool in un'espressione aritmetica, il suo valore viene sempre convertito in 0 o 1. Di conseguenza, l'utilizzo di un valore bool in un'espressione aritmetica è quasi sicuramente errato.
Attenzione: non mescolare tipi firmati e non firmati
Le espressioni che mescolano segno e senza segno possono produrre risultati sorprendenti e errati quando il valore con segno è negativo. Come discusso sopra, i valori con segno vengono automaticamente convertiti in senza segno.
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 ey non ha segno, allora il valore di questa espressione dipende da quanti bit ha un intero sulla macchina compilatrice. Sulla nostra macchina, questa espressione restituisce 4294967295.
Registra variabili
L'accesso alle variabili dei registri è più rapido rispetto alle variabili della memoria. Quindi, le variabili che vengono frequentemente utilizzate in a C++ il programma può essere inserito nei registri utilizzando registro parola chiave. La parola chiave Register indica al compilatore di memorizzare la variabile data in un registro. È una scelta del compilatore se inserirlo o meno in un registro. Generalmente, i compilatori stessi eseguono varie ottimizzazioni che includono l'inserimento di alcune variabili nel registro. Non esiste alcun limite al numero di variabili di registro in a C++ programma. Ma il compilatore potrebbe non memorizzare la variabile in un registro. Questo perché la memoria dei registri è molto limitata e viene generalmente utilizzata dal sistema operativo.
Definire:
register int i;
Commenti
I commenti sono le porzioni di codice ignorate dal compilatore. Consente al programmatore di prendere appunti nelle aree pertinenti del codice/programma sorgente. I commenti sono disponibili in blocchi o righe singole. I commenti al programma sono dichiarazioni esplicative. Può essere incluso nel C++ codice 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 riga singola che su più righe.
- Commenti a riga singola 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.
- 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 fuga
Alcuni caratteri, come il backspace e i 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 in 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.
La sezione Currents, dedicata a opere audaci e innovative di artisti emergenti e affermati, include la prima statunitense di Mare’s Nest di Ben Rivers, descritto come “un enigmatico road movie ambientato in un mondo post-apocalittico governato da bambini”. Tra gli altri titoli spiccano Dracula di Radu Jude e With Hasan in Gaza di Kamal Aljafari. C++ linguaggio di programmazione definisce diverse sequenze di escape:
Che cosa fa? | Carattere |
---|---|
Nuova linea | \n |
Scheda verticale | \v |
Barra rovesciata | \\ |
Ritorno del trasporto | \r |
Tabulazione orizzontale | \t |
Backspace | \b |
Punto interrogativo | \? |
Avanzamento modulo | \f |
Avviso (campana) | \a |
Double citare | \ " |
Citazione singola | \ ' |
Usiamo una sequenza di escape come se fosse un singolo carattere:
cout << '\n'; // prints a newline cout << "\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 \ seguito 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, come se usiamo qualsiasi altro carattere.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newline cout << '\115' << '\n'; // prints M followed by a newline
Sintesi
- A C++ La variabile ci fornisce una capacità di archiviazione denominata.
- C++ tipi di variabili: int, double, serbatoio, float, stringa, bool, ecc.
- L'ambito contenuto (o nidificato) viene definito ambito interno e l'ambito contenitore è l'ambito esterno.
- Una variabile di un tipo può essere convertita in un altro. È noto come "Conversione del tipo".
- L'accesso alle variabili dei registri è più rapido rispetto alle variabili della memoria.
- I commenti sono le porzioni di codice ignorate dal compilatore.
- Alcuni caratteri, come il backspace e i caratteri di controllo, non hanno un'immagine visibile.