Sobes.tech
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;
}