Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Tipi di Dati Numerici | Variabili e Tipi di Dati
Introduzione a C++

bookTipi di Dati Numerici

Numeri interi

I tipi di dati interi sono i più comunemente utilizzati per i numeri interi. Il tipo di dato int può contenere valori nell'intervallo da -2,147,483,648 a 2,147,483,647.

main.cpp

main.cpp

copy
12345678910
#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 si dichiara una variabile di tipo int, vengono allocati esattamente 4 byte della memoria del PC. E i numeri superiori a 2147483647 (o inferiori a -2147483648) non possono essere contenuti in questi 4 byte. Fortunatamente, sono disponibili altri tipi di dati che possono allocare più (o meno) spazio a seconda delle esigenze. Ecco la tabella:

Tipo di dato
Intervallo
Dimensione
short
-32,768 a 32,767
2 byte
int
-2,147,483,648 a 2,147,483,647
4 byte
long
-9223372036854775808 a 9223372036854775807
8 byte

È possibile utilizzare long per memorizzare numeri di grandi dimensioni (ad esempio, la popolazione mondiale). Si può anche usare short se si è certi che il numero non supererà l'intervallo da -32,768 a 32,767 (ad esempio, per memorizzare l'età di un utente). L'utilizzo di short occuperà meno spazio di memoria.

main.cpp

main.cpp

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

Prestare attenzione al tipo di dato selezionato. Se l'intervallo di un tipo viene superato, il compilatore C++ non segnalerà alcun avviso, e si potrebbe ricevere un valore inatteso senza alcuna indicazione di errore.

Numeri in virgola mobile

I tipi di dato sopra sono progettati per memorizzare numeri interi. Se provassimo ad assegnare 1.6 a uno di questi, otterremmo il seguente risultato:

main.cpp

main.cpp

copy
12345678
#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), è necessario utilizzare il tipo di dato float o double.

Tipo di dato
Precisione
Dimensione
float
7 cifre decimali
4 byte
double
15 cifre decimali
8 byte

Ecco un esempio di utilizzo di double per memorizzare 1.6.

main.cpp

main.cpp

copy
12345678910
#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 una precisione di soli sette cifre, il numero 123.456789 è già fuori dal suo intervallo. Questo può portare a risultati inaccurati (come mostrato nell'esempio sotto). Pertanto, è preferibile utilizzare double di default, a meno che non si sia certi che la precisione di float sia sufficiente.

Ovviamente, è possibile utilizzare float o double per memorizzare numeri interi, poiché questi sono numeri decimali con una parte decimale uguale a 0. Tuttavia, come buona pratica, se una variabile memorizza valori che possono essere solo numeri interi (ad esempio, popolazione o like), è preferibile utilizzare short/int/long.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain the difference between float and double in more detail?

What happens if I try to store a number outside the range of a data type?

When should I use short, int, or long in my programs?

Awesome!

Completion rate improved to 3.85

bookTipi di Dati Numerici

Scorri per mostrare il menu

Numeri interi

I tipi di dati interi sono i più comunemente utilizzati per i numeri interi. Il tipo di dato int può contenere valori nell'intervallo da -2,147,483,648 a 2,147,483,647.

main.cpp

main.cpp

copy
12345678910
#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 si dichiara una variabile di tipo int, vengono allocati esattamente 4 byte della memoria del PC. E i numeri superiori a 2147483647 (o inferiori a -2147483648) non possono essere contenuti in questi 4 byte. Fortunatamente, sono disponibili altri tipi di dati che possono allocare più (o meno) spazio a seconda delle esigenze. Ecco la tabella:

Tipo di dato
Intervallo
Dimensione
short
-32,768 a 32,767
2 byte
int
-2,147,483,648 a 2,147,483,647
4 byte
long
-9223372036854775808 a 9223372036854775807
8 byte

È possibile utilizzare long per memorizzare numeri di grandi dimensioni (ad esempio, la popolazione mondiale). Si può anche usare short se si è certi che il numero non supererà l'intervallo da -32,768 a 32,767 (ad esempio, per memorizzare l'età di un utente). L'utilizzo di short occuperà meno spazio di memoria.

main.cpp

main.cpp

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

Prestare attenzione al tipo di dato selezionato. Se l'intervallo di un tipo viene superato, il compilatore C++ non segnalerà alcun avviso, e si potrebbe ricevere un valore inatteso senza alcuna indicazione di errore.

Numeri in virgola mobile

I tipi di dato sopra sono progettati per memorizzare numeri interi. Se provassimo ad assegnare 1.6 a uno di questi, otterremmo il seguente risultato:

main.cpp

main.cpp

copy
12345678
#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), è necessario utilizzare il tipo di dato float o double.

Tipo di dato
Precisione
Dimensione
float
7 cifre decimali
4 byte
double
15 cifre decimali
8 byte

Ecco un esempio di utilizzo di double per memorizzare 1.6.

main.cpp

main.cpp

copy
12345678910
#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 una precisione di soli sette cifre, il numero 123.456789 è già fuori dal suo intervallo. Questo può portare a risultati inaccurati (come mostrato nell'esempio sotto). Pertanto, è preferibile utilizzare double di default, a meno che non si sia certi che la precisione di float sia sufficiente.

Ovviamente, è possibile utilizzare float o double per memorizzare numeri interi, poiché questi sono numeri decimali con una parte decimale uguale a 0. Tuttavia, come buona pratica, se una variabile memorizza valori che possono essere solo numeri interi (ad esempio, popolazione o like), è preferibile utilizzare short/int/long.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3
some-alt