Junior
Kolik paměti zabírají datové typy jako bool, char, short, int, long long, float a double?
sobes.tech AI
Odpověď od AI
Velikost vestavných datových typů v jazycích C a C++ není přísně stanovena standardem, s výjimkou sizeof(char), který je vždy roven 1. Ostatní velikosti se mohou lišit v závislosti na architektuře procesoru a kompilátoru. Nicméně existují minimální garantované rozsahy hodnot a typické velikosti na většině moderních systémů (například x86-64):
| Datový typ | Minimální rozsah (C/C++) | Obvyklá velikost (byty) |
|---|---|---|
bool |
Není explicitně definováno standardem | 1 |
char |
Na základě jednoho bytu (>= 8 bitů) | 1 |
short |
>= [-32767, +32767] (>= 16 bitů) | 2 |
int |
>= short (>= 16 bitů) |
4 |
long long |
>= [-9223372036854775807, +9223372036854775807] (>= 64 bitů) | 8 |
float |
Jednoduchá přesnost (obvykle IEEE 754) | 4 |
double |
Dvojitá přesnost (obvykle IEEE 754) | 8 |
Reálná velikost může být určena pomocí operátoru 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;
}