Sobes.tech
Junior

Koliko memorije zauzimaju tipovi podataka kao što su bool, char, short, int, long long, float i double?

sobes.tech АИ

Одговор од АИ

Veličina ugrađenih tipova podataka u C i C++ nije strogo definisana standardom, osim sizeof(char), koji je uvek jednak 1. Ostale veličine mogu varirati u zavisnosti od arhitekture procesora i kompajlera. Međutim, postoje minimalni garantovani opsezi i tipične veličine na većini savremenih sistema (npr. x86-64):

Tip podataka Minimalni opseg (C/C++) Uobičajena veličina (bajtovi)
bool Nije eksplicitno definisano standardom 1
char Bazirano na bajtu (>= 8 bita) 1
short >= [-32767, +32767] (>= 16 bita) 2
int >= short (>= 16 bita) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bita) 8
float Jednostruka preciznost (obično IEEE 754) 4
double Dvostruka preciznost (obično IEEE 754) 8

Prava veličina može se odrediti pomoću operatora 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;
}