Ma’lumot turlari — C++’ning poydevoridagi eng muhim tushunchalardan biri. Har bir qiymat aniq turga ega bo’lishi shart, chunki tur qiymat xotirada qancha joy egallashini va u ustida qanday amallar bajarilishini belgilaydi. C++’ning tezligi aynan shu qat’iy turlar tizimidan kelib chiqadi.
Ma’lumot turi — qiymatning tabiatini, xotiradagi hajmini va unga ruxsat etilgan amallarni belgilaydigan tasnif. C++ turlari asosiy (fundamental) va tuzilmali (composite) turlarga bo’linadi.
Asosiy turlar va ularning hajmi
C++’ning asosiy turlarini, ular egallaydigan taxminiy xotira hajmini va qiymat oralig’ini jadvalda ko’rib chiqamiz:
| Tur | Hajmi | Nima saqlaydi | Misol |
|---|---|---|---|
int |
4 bayt | butun son | 26 |
double |
8 bayt | aniqroq kasr son | 3.14159 |
float |
4 bayt | kasr son | 3.14f |
char |
1 bayt | bitta belgi | 'A' |
bool |
1 bayt | rost/yolg’on | true |
string |
o’zgaruvchan | matn | "UzbekDevs" |
Turlarni amalda ko’rish
Har bir turni e’lon qilib, natijasini kuzatamiz:
#include <iostream>
using namespace std;
int main() {
int yosh = 26;
double narx = 15000.75;
char daraja = 'A';
bool faol = true;
string ism = "Master Sherkulov";
cout << ism << endl;
cout << "Yosh: " << yosh << ", narx: " << narx << endl;
cout << "Daraja: " << daraja << ", faol: " << faol << endl;
return 0;
}
Master Sherkulov
Yosh: 26, narx: 15000.8
Daraja: A, faol: 1
E’tibor bering: bool turdagi true ekranga 1 bo’lib chiqdi (false esa 0). Bu C++’ning mantiqiy qiymatlarni son sifatida saqlashining natijasi.
Turlar hajmini o’lchash — sizeof
Har bir tur qancha bayt egallashini sizeof operatori aniq ko’rsatadi:
#include <iostream>
using namespace std;
int main() {
cout << "int: " << sizeof(int) << " bayt" << endl;
cout << "double: " << sizeof(double) << " bayt" << endl;
cout << "char: " << sizeof(char) << " bayt" << endl;
return 0;
}
int: 4 bayt
double: 8 bayt
char: 1 bayt
Bu ma’lumot muhim: katta ma’lumotlar bilan ishlaganda to’g’ri tur tanlash xotirani sezilarli tejaydi.
Turlarni bir-biriga o’tkazish
Bir turni boshqasiga aylantirish type casting deb ataladi. Masalan, butun bo’lish muammosini kasr turga o’tkazib hal qilamiz:
#include <iostream>
using namespace std;
int main() {
int a = 7, b = 2;
double natija = (double)a / b; // a ni double ga o'tkazamiz
cout << natija << endl;
return 0;
}
3.5
(double)a yozuvi a ni vaqtincha kasr songa aylantirdi, shu tufayli bo’lish aniq natija berdi. Turlarni ongli boshqarish — C++’da aniqlikning kalitidir.
Xulosa
Bu bo’limda C++’ning asosiy ma’lumot turlarini, ularning hajmini, sizeof bilan o’lchashni va type casting orqali turlarni o’tkazishni ko’rib chiqdik. Tur — bu qiymatning pasporti: u hajmni ham, imkoniyatlarni ham belgilaydi. Keyingi darsda operatorlar — qiymatlar ustidagi amallarga o’tamiz.