Sobes.tech
Junior

Koľko pamäte zaberajú dátové typy ako bool, char, short, int, long long, float a double?

sobes.tech AI

Odpoveď od AI

Veľkosť vstavaných dátových typov v jazykoch C a C++ nie je prísne stanovená štandardom, s výnimkou sizeof(char), ktorý je vždy rovný 1. Ostatné veľkosti sa môžu líšiť v závislosti od architektúry procesora a kompilátora. Existujú však minimálne garantované rozsahy hodnôt a typické veľkosti na väčšine moderných systémov (napríklad x86-64):

Typ dát Minimálny rozsah (C/C++) Bežná veľkosť (bajty)
bool Nie je explicitne definované štandardom 1
char Na základe bajtu (>= 8 bitov) 1
short >= [-32767, +32767] (>= 16 bitov) 2
int >= short (>= 16 bitov) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bitov) 8
float Jednoduchá presnosť (zvyčajne IEEE 754) 4
double Dvojitá presnosť (zvyčajne IEEE 754) 8

Reálna veľkosť môže byť určená pomocou operátora sizeof:

#include <iostream>

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