Junior
bool, char, short, int, long long, float жана double сыяктуу маалыматтар түрлөрү канча жадты ээлейт?
sobes.tech AI
AIден жооп
C жана C++ тилдеринде киргизилген маалымат түрлөрүнүн өлчөмү стандарт тарабынан так аныкталган эмес, sizeof(char) исключени менен, ал дайыма 1ге барабар. Башка өлчөмдөр процессор архитектурасына жана компиляторго жараша өзгөрүшү мүмкүн. Бирок, минималдуу кепилденген диапазондар жана типтүү өлчөмдөр көпчүлүк заманбап системдерде (мисалы, x86-64) бар:
| Маалымат түрү | Минималдуу диапазон (C/C++) | Типтүү өлчөм (байт) |
|---|---|---|
bool |
Стандарт тарабынан так аныкталган эмес | 1 |
char |
Бир байтка негизделген (>= 8 бит) | 1 |
short |
>= [-32767, +32767] (>= 16 бит) | 2 |
int |
>= short (>= 16 бит) |
4 |
long long |
>= [-9223372036854775807, +9223372036854775807] (>= 64 бит) | 8 |
float |
Биринчи даражадагы тактык (жалпысынан IEEE 754) | 4 |
double |
Эки даражадагы тактык (жалпысынан IEEE 754) | 8 |
Чын өлчөм sizeof оператору аркылуу аныкталышы мүмкүн:
#include <iostream>
int main() {
std::cout << "sizeof(bool): " << sizeof(bool) << " байт" << std::endl;
std::cout << "sizeof(char): " << sizeof(char) << " байт" << std::endl;
std::cout << "sizeof(short): " << sizeof(short) << " байт" << std::endl;
std::cout << "sizeof(int): " << sizeof(int) << " байт" << std::endl;
std::cout << "sizeof(long long): " << sizeof(long long) << " байт" << std::endl;
std::cout << "sizeof(float): " << sizeof(float) << " байт" << std::endl;
std::cout << "sizeof(double): " << sizeof(double) << " байт" << std::endl;
return 0;
}