Sobes.tech
Junior

Mekkora memóriát foglalnak el olyan adattípusok, mint a bool, char, short, int, long long, float és double?

sobes.tech MI

Válasz az MI-től

A C és C++ beépített adattípusainak mérete nem szigorúan meghatározott a szabvány szerint, kivéve a sizeof(char), amely mindig 1. A többi méret a processzor architektúrájától és a fordítótól függően változhat. Azonban léteznek minimálisan garantált tartományok és tipikus méretek a legtöbb modern rendszeren (például x86-64):

Adattípus Minimális tartomány (C/C++) Szokásos méret (byte)
bool Nem határozza meg a szabvány 1
char Egy bájton alapul (>= 8 bit) 1
short >= [-32767, +32767] (>= 16 bit) 2
int >= short (>= 16 bit) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bit) 8
float Egyszeres pontosság (általában IEEE 754) 4
double Dupla pontosság (általában IEEE 754) 8

A tényleges méret meghatározható a sizeof operátor segítségével:

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