Sobes.tech
Junior

Quanto spazio di memoria occupano tipi di dati come bool, char, short, int, long long, float e double?

sobes.tech AI

Risposta dell'AI

La dimensione dei tipi di dati integrati in C e C++ non è strettamente definita dallo standard, ad eccezione di sizeof(char), che è sempre uguale a 1. Le altre dimensioni possono variare a seconda dell'architettura del processore e del compilatore. Tuttavia, ci sono intervalli minimi garantiti e dimensioni tipiche sulla maggior parte dei sistemi moderni (ad esempio, x86-64):

Tipo di dato Intervallo minimo (C/C++) Dimensione tipica (byte)
bool Non definito esplicitamente dallo standard 1
char Basato su un byte (>= 8 bit) 1
short >= [-32767, +32767] (>= 16 bit) 2
int >= short (>= 16 bit) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bit) 8
float Precisione semplice (tipicamente IEEE 754) 4
double Precisione doppia (tipicamente IEEE 754) 8

La dimensione reale può essere determinata usando l'operatore sizeof:

#include <iostream>

int main() {
    std::cout << "sizeof(bool): " << sizeof(bool) << " bytes" << std::endl;
    std::cout << "sizeof(char): " << sizeof(char) << " bytes" << std::endl;
    std::cout << "sizeof(short): " << sizeof(short) << " bytes" << std::endl;
    std::cout << "sizeof(int): " << sizeof(int) << " bytes" << std::endl;
    std::cout << "sizeof(long long): " << sizeof(long long) << " bytes" << std::endl;
    std::cout << "sizeof(float): " << sizeof(float) << " bytes" << std::endl;
    std::cout << "sizeof(double): " << sizeof(double) << " bytes" << std::endl;
    return 0;
}