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