Junior
Kui palju mälu võtavad sellised andmetüübid nagu bool, char, short, int, long long, float ja double?
sobes.tech AI
Vastus AI-lt
C ja C++ iebūvēto datu tipu izmērs nav stingri noteikts standarta, izņemot sizeof(char), kas vienmēr ir vienāds ar 1. Citi izmēri var atšķirties atkarībā no procesora arhitektūras un kompilatora. Tomēr pastāv minimālie garantētie vērtību diapazoni un tipiskie izmēri lielākajā daļā mūsdienu sistēmu (piemēram, x86-64):
| Datu tips | Minimālais diapazons (C/C++) | Parasts izmērs (baiti) |
|---|---|---|
bool |
Nav tieši noteikts standarta | 1 |
char |
Balstīts uz baitu (>= 8 bitiem) | 1 |
short |
>= [-32767, +32767] (>= 16 bitiem) | 2 |
int |
>= short (>= 16 bitiem) |
4 |
long long |
>= [-9223372036854775807, +9223372036854775807] (>= 64 bitiem) | 8 |
float |
Viena precizitāte (parasti IEEE 754) | 4 |
double |
Dubultā precizitāte (parasti IEEE 754) | 8 |
Faktisko izmēru var noteikt ar sizeof operatoru:
#include <iostream>
int galva() {
std::cout << "sizeof(bool): " << sizeof(bool) << " baitus" << std::endl;
std::cout << "sizeof(char): " << sizeof(char) << " baitus" << std::endl;
std::cout << "sizeof(short): " << sizeof(short) << " baitus" << std::endl;
std::cout << "sizeof(int): " << sizeof(int) << " baitus" << std::endl;
std::cout << "sizeof(long long): " << sizeof(long long) << " baitus" << std::endl;
std::cout << "sizeof(float): " << sizeof(float) << " baitus" << std::endl;
std::cout << "sizeof(double): " << sizeof(double) << " baitus" << std::endl;
return 0;
}