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