Sobes.tech
Junior

Ile pamięci zajmują takie typy danych jak bool, char, short, int, long long, float i double?

sobes.tech AI

Odpowiedź od AI

Rozmiar wbudowanych typów danych w C i C++ nie jest ściśle określony przez standard, z wyjątkiem sizeof(char), który zawsze jest równy 1. Pozostałe rozmiary mogą się różnić w zależności od architektury procesora i kompilatora. Jednak istnieją minimalne gwarantowane zakresy wartości i typowe rozmiary na większości nowoczesnych systemów (np. x86-64):

Typ danych Minimalny zakres (C/C++) Typowy rozmiar (bajty)
bool Nie zdefiniowany jawnie przez standard 1
char Na podstawie bajta (>= 8 bitów) 1
short >= [-32767, +32767] (>= 16 bitów) 2
int >= short (>= 16 bitów) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bitów) 8
float Precyzja pojedyncza (zazwyczaj IEEE 754) 4
double Precyzja podwójna (zazwyczaj IEEE 754) 8

Faktyczny rozmiar można określić za pomocą operatora 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;
}