C++ tur modifikatorlari
C++ dasturlashda asosiy data types ning ma'nosini o'zgartirish uchun tur modifikatorlaridan foydalaniladi.
C++ da to'rt turdagi modifikatorlar mavjud:
shortlongsignedunsignedBu yerda qisqacha xulosa:
Data Type Size (in Bytes) Meaning signed int 4 Used for integers (equivalent to int). unsigned int 4 Can only store non-negative integers. short 2 Used for small integers.Range: -32768 to 32767 long at least 4 Used for large integers.Equivalent to long int. unsigned long 4 Used for large positive integers or 0.Equivalent to unsigned long int. long long 8 Used for very large integers.Equivalent to long long int. unsigned long long 8 Used for very large positive integers or 0.Equivalent to unsigned long long int. long double 8 Used for large floating-point numbers. signed char 1 Used for characters.Guaranteed range -127 to 127. unsigned char 1 Used for characters.Range 0 to 255.
Kichik butun sonlar uchun short dan foydalanishimiz mumkin (−32,767 dan 32,767 gacha). Masalan,
// kichik butun son
short a = 12345;
Bu erda a - short butun o'zgaruvchisi.
[!NOTE]
shortshort intga teng.
Agar biz katta butun sonni saqlashimiz kerak bo'lsa (-2147483647 dan 2147483647 oralig'ida), biz long tip spetsifikatsiyasidan foydalanishimiz mumkin. Masalan,
// katta butun son
long b = 123456;
[!NOTE]
longlong intga teng.
Uzun turdagi modifikatordan double o'zgaruvchilari bilan ham foydalanish mumkin.
// katta suzuvchi nuqta raqami
long double c = 0.333333333333333333L;
[!NOTE]
long doubleni ko'rsatish uchun bizLqo'shimchasidan foydalanamiz. Agar bizLqo'shimchasidan foydalanmasak, budoubleqiymati bo'lib,long doublega aylantiriladi (bu ma'lumotlar yo'qolishiga olib kelishi mumkin).
long long turini yaratish uchun long ikki marta takrorlanishi mumkin. Bu tip long dan ham kattaroq raqamlar uchun ishlatiladi. long long turi modifikatori faqat int bilan ishlatilishi mumkin.
Masalan,
// long long int
long long num = 12345678;
Belgilangan o'zgaruvchilar ham ijobiy, ham salbiy butun sonlarni, shu jumladan nolni ham o'z ichiga olishi mumkin. Masalan,
// musbat qiymatli butun son
signed int x = 23;
// manfiy qiymatli butun son
signed int y = -13;
// nol qiymatli butun son
signed int z = 0;
Bu yerga,
[!NOTE] Odatiy bo'lib, butun sonlar
signeddir. Shuning uchunsigned into'rniga biz to'g'ridan-to'g'riintdan foydalanishimiz mumkin.signedvaunsignedfaqatintvacharturlari bilan ishlatilishi mumkin.
Belgilanmagan o'zgaruvchilar faqat manfiy bo'lmagan butun qiymatlarni saqlashi mumkin. Masalan,
// musbat qiymatli butun son
unsigned int x = 2;
unsigned int y = 0;
Bu yerga,
Umuman olganda, int o'zgaruvchisi -2,147,483,648 dan 2,147,483,647 gacha bo'lgan qiymatlarni saqlashi mumkin.
unsigned int o'zgaruvchisi esa 0 dan 4,294,967,295 gacha bo'lgan qiymatlarni saqlashi mumkin.
C++ da 3 xil char turi mavjud:
charsigned charunsigned charAmalda, asosan, faqat 2 tur mavjud:
signed char (guaranteed range: -127 to 127)unsigned char (guaranteed range: 0 to 256)Buning sababi shundaki, turli kompilyatorlar char ni signed char yoki unsigned char sifatida o'zlarining xohishlariga ko'ra ko'rib chiqadilar.
[!NOTE] Eslatmalar: Standart C++ da
charsigned charyokiunsigned charbilan bir xil emas. Kompilyatorlar amaliylik uchun buni e'tiborsiz qoldiradilar.signedyokiunsignedvariantlari o'rniga faqatchardan foydalansak, bu tur oddiy belgi sifatida tanilgan.
Siz taxmin qilganingizdek, signed char ham musbat, ham manfiy butun sonlarni saqlashi mumkin, unsigned char esa faqat musbat sonlarni (shu jumladan 0) saqlashi mumkin.
// oddiy belgi
char plain_1 = 65;
char plain_2 = 0;
// manfiy qiymatga ega oddiy belgi
// ba'zi kompilyatorlar bilan bog'liq muammolarga olib kelishi mumkin
char plain_3 = -56;
// imzolangan belgi
signed char sin_1 = 12;
signed char sin_2 = 0;
signed char sin_3 = -12;
// imzosiz belgi
unsigned char unsin_1 = 85;
unsigned char unsin_2 = 0;
Bu yerga,
[!NOTE] Raqamli manipulyatsiyalarni amalga oshirish uchun oddiy belgidan foydalanmaslik ma'qul; Buning o'rniga
signed charyokiunsigned charishlatilishi kerak. Oddiy belgi faqat belgilar qiymatlarini saqlash uchun ishlatilishi kerak.