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