Sobes.tech
Junior

Kiek atminties užima tokie duomenų tipai kaip bool, char, short, int, long long, float ir double?

sobes.tech AI

Atsakymas iš AI

C ir C++ įmontuotų duomenų tipų dydis nėra griežtai nustatytas standartu, išskyrus sizeof(char), kuris visada yra lygus 1. Kiti dydžiai gali skirtis priklausomai nuo procesoriaus architektūros ir kompiliatoriaus. Tačiau egzistuoja minimalūs garantuoti reikšmių diapazonai ir tipiniai dydžiai daugelyje šiuolaikinių sistemų (pavyzdžiui, x86-64):

Duomenų tipas Minimalus diapazonas (C/C++) Įprastas dydis (baitai)
bool Nenurodytas aiškiai standartu 1
char Remiasi baitu (>= 8 bitų) 1
short >= [-32767, +32767] (>= 16 bitų) 2
int >= short (>= 16 bitų) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bitų) 8
float Vieno tikslumo (dažniausiai IEEE 754) 4
double Dvigubo tikslumo (dažniausiai IEEE 754) 8

Faktinis dydis gali būti nustatytas naudojant sizeof operatorių:

#include <iostream>

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