Contenuti del Corso
Introduzione a C++
Introduzione a C++
Tipi di Dati Numerici
Numeri interi
I tipi di dati interi sono i più comunemente usati per i numeri interi. Il tipo di dato int
può contenere valori nell'intervallo di -2,147,483,648
a 2,147,483,647
.
main
#include <iostream> int main() { int goodNumber = 12; int tooLarge = 2147483648; std::cout << "Printing goodNumber: " << goodNumber << std::endl; std::cout << "Printing tooLarge: " << tooLarge << std::endl; }
Questo accade perché quando dichiari una variabile int
, essa alloca precisamente 4 byte della memoria del tuo PC. E i numeri superiori a 2147483647
(o inferiori a -2147483648
) non entrano in quei 4 byte. Fortunatamente, sono disponibili altri tipi di dati che possono allocarti più (o meno) spazio per le tue esigenze. Ecco la tabella:
Tipo di Dato | ||
---|---|---|
short | 2 bytes | |
int | 4 bytes | |
long | 8 bytes |
Quindi puoi usare long
per memorizzare numeri grandi (ad esempio, la popolazione mondiale). Puoi anche usare short
se sei sicuro che il tuo numero non supererà l'intervallo -32,768
a 32,767
(ad esempio, memorizzare l'età di un utente). Usare short
occuperà meno spazio di memoria.
main
#include <iostream> int main() { short age = 22; int likes = 143200; long population = 8200000000; std::cout << "Age: " << age << std::endl; std::cout << "Likes: " << likes << std::endl; std::cout << "World's population: " << population << std::endl; }
Nota
Fai attenzione al tipo di dato che selezioni. Se il range di un tipo viene superato, il compilatore C++ non ti avviserà, e potresti ricevere un valore inaspettato senza alcuna indicazione di errore.
Numeri a virgola mobile
I tipi di dati sopra sono progettati per memorizzare numeri interi. Se provassimo ad assegnare 1.6
a uno di questi, ecco cosa otterremmo:
main
#include <iostream> int main() { // Change the data type to `float` o `double` int num = 1.6; std::cout << num << std::endl; }
Il tipo int
tronca la parte decimale di un numero. Questo comportamento è lo stesso per i tipi short
e long
. Per memorizzare numeri in virgola mobile (decimali), dovresti usare il tipo di dato float
o double
.
Tipo di Dato | ||
---|---|---|
float | ||
double |
Ecco un esempio di utilizzo di double
per memorizzare 1.6
.
main
#include <iostream> int main() { float floatNum = 123.45678; double doubleNum = 123.45678; std::cout << "using float:" << floatNum - 123 << std::endl; std::cout << "using double:" << doubleNum - 123 << std::endl; }
Nota
Poiché il tipo
float
ha solo una precisione di sette cifre, il numero 123.456789 è già fuori dal suo intervallo. Questo può portare a risultati inaccurati (come mostrato nell'esempio sotto). Quindi è meglio usaredouble
di default a meno che non si sia sicuri che la precisione difloat
sia sufficiente.
Ovviamente, puoi usare float
o double
per memorizzare numeri interi poiché questi sono numeri decimali con una parte decimale pari a 0. Tuttavia, come buona pratica, se una variabile memorizza valori che possono essere solo numeri interi (ad esempio, popolazione o mi piace), dovrebbero essere usati short
/int
/long
.
Grazie per i tuoi commenti!