Sobes.tech
Junior

Hoeveel geheugen nemen datatypes zoals bool, char, short, int, long long, float en double in beslag?

sobes.tech AI

Antwoord van AI

De grootte van de ingebouwde datatypes in C en C++ is niet strikt vastgelegd door de standaard, behalve sizeof(char), dat altijd gelijk is aan 1. De andere groottes kunnen variëren afhankelijk van de architectuur van de processor en de compiler. Er zijn echter minimale gegarandeerde bereiken en typische groottes op de meeste moderne systemen (bijvoorbeeld x86-64):

Datatype Minimale bereik (C/C++) Gebruikelijke grootte (bytes)
bool Niet expliciet gedefinieerd door de standaard 1
char Gebaseerd op een byte (>= 8 bits) 1
short >= [-32767, +32767] (>= 16 bits) 2
int >= short (>= 16 bits) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bits) 8
float Enkelprecisie (meestal IEEE 754) 4
double Dubbelprecisie (meestal IEEE 754) 8

De werkelijke grootte kan worden bepaald met behulp van de sizeof operator:

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