Sobes.tech
Junior

Bool, char, short, int, long long, float va double kabi ma'lumot turlari qancha xotira oladi?

sobes.tech AI

AIdan javob

C va C++ dasturlash tillarida integratsiyalashgan ma'lumot turlarining o'lchami standart tomonidan qat'iy belgilangan emas, sizeof(char) bundan mustasno, u har doim 1 ga teng. Boshqa o'lchamlar protsessor arxitekturasi va kompilyatorga qarab o'zgarishi mumkin. Biroq, ko'pgina zamonaviy tizimlarda (masalan, x86-64) minimal kafolatlangan diapazonlar va odatiy o'lchamlar mavjud:

Ma'lumot turi Minimal diapazon (C/C++) Odatiy o'lcham (bayt)
bool Standart tomonidan aniq belgilangan emas 1
char Bir baytdan iborat (>= 8 bit) 1
short >= [-32767, +32767] (>= 16 bit) 2
int >= short (>= 16 bit) 4
long long >= [-9223372036854775807, +9223372036854775807] (>= 64 bit) 8
float Yagona aniqlik (odatda IEEE 754) 4
double Ikki barqaror aniqlik (odatda IEEE 754) 8

Haqiqiy o'lcham sizeof operatori yordamida aniqlanishi mumkin:

#include <iostream>

int main() {
    std::cout << "sizeof(bool): " << sizeof(bool) << " bayt" << std::endl;
    std::cout << "sizeof(char): " << sizeof(char) << " bayt" << std::endl;
    std::cout << "sizeof(short): " << sizeof(short) << " bayt" << std::endl;
    std::cout << "sizeof(int): " << sizeof(int) << " bayt" << std::endl;
    std::cout << "sizeof(long long): " << sizeof(long long) << " bayt" << std::endl;
    std::cout << "sizeof(float): " << sizeof(float) << " bayt" << std::endl;
    std::cout << "sizeof(double): " << sizeof(double) << " bayt" << std::endl;
    return 0;
}