C qat’iy o‘lchamli butun sonlar


ULASHISH

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;
}

O‘zingiz sinab ko‘ring »


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;
}

O‘zingiz sinab ko‘ring »

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!