Har xil turdagi o‘zgaruvchilar kompyuter xotirasida har xil sondagi baytlarni egallaydi. Bunda, hattoki bir turdagi o‘zgaruvchilar ham qaysi kompyuterda va qaysi operatsion tizimda amal qilishiga qarab har xil o‘lchamdagi xotirani band qilishi mumkin.
C++ tilida ixtiyoriy turdagi (tayanch va hosilaviy turdagi) o‘zgaruvchilarning o‘lchamini sizeof operatori yordamida aniqlanadi. Bu operator konstantaga, turga va o‘zgaruvchiga qo‘llanishi mumkin.
Quyidagi dastur kompyuterning aniq platformasi uchun tayanch turlarning o‘lchamlarini chop qiladi.
{
cout<<”int turining o‘lchami:” << sizeof(int)<<”\n”;
cout<<”float turining o‘lchami:” << sizeof(float)<<”\n”;
cout<<”double turining o‘lchami:” << sizeof(double)<<”\n”;
cout<<”char turining o‘lchami:” << sizeof(char)<<”\n”;
return 0;
}
Dastur bajarilishi natijasida sizeof operatori yordamida mos turlarning o‘lchamlari hisoblanadi va ekranga chop etiladi.
sizeofamali operand sifatida ko‘rsatilgan ob’ektning baytlarda xotiradagi hajmini hisoblash uchun ishlatiladi.
Bu amalning ikki ko‘rinishi mavjud:
sizeof ifoda;
sizeof (tip)
Shuni ta’kidlab o‘tish lozimki, sizeof funksiyasi preprotsessor qayta ishlash jarayonida bajariladi, shuning uchun dastur bajarilish jarayonida vaqt talab etmaydi.
Misol uchun:
sizeof 3.14 = 8 sizeof 3.14f = 4 sizeof(double) = 8. sizeof 3.14L = 10 sizeof(char) = 1
#include #include using namespace std;
int main()
{
printf("%lu\n", sizeof(char));
printf("%lu\n", sizeof(int));
printf("%lu\n", sizeof(float));
printf("%lu", sizeof(double));
getchar();
return 0;
}
Natija quyidagicha bo‘ladi:
1
4
4
8
2.Ifoda qavslarsiz yoki ko‘rsatilmasdan belgilanishi mumkin.
// First type
sizeof expression
// Second type
sizeof(expression)
Ifoda faqat baholashni emas, balki operanda turini olish uchun ishlatiladi. Masalan, quyidagi kod i ning qiymatini 5 sifatida va ia hajmini ko‘rsatadi
#include int main()
{
int i = 5;
int int_size = sizeof(i++);
// Operand hajmini ko‘rsatish
printf("\n hajmi i = %d", int_size);
// Operandning qiymatini ko'rsatish
printf("\n qiymati i = %d", i);
getchar();
return 0;
}