C qat’iy o‘lchamli butun sonlar
Qat’iy o‘lchamli butun sonlar
C tilida int, short va long tiplarining o‘lchami kompyuteringiz va tizimingizga qarab farq qilishi mumkin. Masalan, int bir tizimda 2 bayt, boshqasida esa 4 bayt joy egallashi mumkin.
Dasturlar hamma joyda bir xil ishlashi uchun C tili <stdint.h> sarlavha faylida qat’iy o‘lchamli butun son tiplarini taqdim etadi. Qaysi kompyuterda ishlashingizdan qat’i nazar, bu tiplar har doim bir xil o‘lchamga (bitlar soniga) ega bo‘ladi.
Eng ko‘p ishlatiladigan qat’iy o‘lchamli tiplar:
| Tip | Hajmi | Oraliq | printf spetsifikatori |
|---|---|---|---|
int8_t |
8 bit (1 bayt) | -128 dan 127 gacha | %d |
uint8_t |
8 bit (1 bayt) | 0 dan 255 gacha | %u |
int16_t |
16 bit (2 bayt) | -32,768 dan 32,767 gacha | %d |
uint16_t |
16 bit (2 bayt) | 0 dan 65,535 gacha | %u |
int32_t |
32 bit (4 bayt) | -2,147,483,648 dan 2,147,483,647 gacha | %d |
uint32_t |
32 bit (4 bayt) | 0 dan 4,294,967,295 gacha | %u |
int64_t |
64 bit (8 bayt) | -9,223,372,036,854,775,808 dan 9,223,372,036,854,775,807 gacha | %lld |
uint64_t |
64 bit (8 bayt) | 0 dan 18,446,744,073,709,551,615 gacha | %llu |
u harfi unsigned (ishorasiz) so‘zini bildiradi, ya’ni bu tip faqat manfiy bo‘lmagan qiymatlarni (0 va undan katta) saqlay oladi. Bu ishorali versiyaga nisbatan maksimal musbat qiymatni ikki barobar oshiradi, lekin manfiy sonlarni saqlash imkoniyati yo‘qoladi.
Qat’iy o‘lchamli butun sonlardan foydalanish
Misol
#include <stdio.h>
#include <stdint.h> // needed for fixed-width integers
int main() {
int8_t a = 100; // 8-bit integer
int16_t b = 30000; // 16-bit integer
int32_t c = 2000000; // 32-bit integer
int64_t d = 9000000000; // 64-bit integer
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%lld\n", d); // use %lld for 64-bit
return 0;
}
Qat’iy o‘lchamli butun sonlardan qachon foydalanish kerak?
Ko‘pchilik kundalik dasturlar uchun bu tiplar kerak emas - odatda oddiy int yetarli.
Biroq qat’iy o‘lchamli butun sonlar quyidagi hollarda juda muhim:
- O‘rnatilgan tizimlar (mikrokontrollerlar kabi kichik qurilmalar uchun dasturlar) yozayotganingizda.
- Aniq o‘lchamlar muhim bo‘lgan fayl formatlari bilan ishlayotganingizda.
- Ma’lumotlarni tarmoqlar orqali yuborayotganingizda va turli kompyuterlarda bir xil natija olishingiz kerak bo‘lganda.
Hayotiy misol
Tasavvur qiling, siz qurilmaning batareya darajasini ko‘rsatadigan dastur yaratyapsiz. Batareya foizi har doim 0 va 100 oralig‘ida bo‘lgani uchun sizga int kabi katta tip kerak emas. Buning o‘rniga aynan 1 bayt (8 bit) hajmga ega va 0 dan 255 gacha qiymatlarni saqlay oladigan uint8_t tipidan foydalanishingiz mumkin:
Misol
#include <stdio.h>
#include <stdint.h>
int main() {
uint8_t battery = 87; // battery level percentage
printf("Battery level is %u out of 100\n", battery);
return 0;
}
Bu yerda biz uint8_t tipidan foydalanib xotirani tejaymiz — u batareya foizi kabi kichik va aniq belgilangan oraliqdagi qiymatlarni saqlash uchun ayni muddao.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
