C++ tilining tayanch turlari:
C++ tilishshg tayanch turlari, ularning baytlardagi o‘lchamlari va qiymatlarining chegaralari 1.2-jadvalda keltirilgan.
1.2-jadval. C++ tilining tayanch turlari
Tur nomi
|
Baytlardagi o‘lchami
|
Qiymat chegarasi
|
bооl
|
1
|
True yoki false
|
Unsigned short int
|
2
|
0..65535
|
Short int
|
2
|
-32768..32767
|
Unsigned long int
|
4
|
0..42949667295
|
Long int
|
4
|
-2147483648..2147483647
|
int(16 razryadli)
|
2
|
-32768.. 32767
|
Int (32 razryadli)
|
4
|
-2147483648..2147483647
|
Unsigned int (16 razryadli)
|
2
|
0..65535
|
Unsigned int (32 razryadli)
|
4
|
0..42949667295
|
Unsigned char
|
1
|
0..255
|
сhаг
|
1
|
-128.. 127
|
flоаt;
|
4
|
1.2Е-38..3.4Е38
|
double
|
8
|
2.2Е-308..1.8Е308
|
Long double(32 razryadli)
|
10
|
3.4е-4932..-3.4e4932
|
void
|
2 yoki 4
|
-
|
Turlangan o‘zgarmaslar
Turlangan o‘zgarmaslar xuddi o‘zgaruvchilardek ishlatiladi va initsializatsiya qilingandan (boshlang‘ich qiymat berilgandan) keyin ularning qiymatini o‘zgartirib bo‘lmaydi .
Turlangan o‘zgarmaslar const kalit so‘zi bilan e’lon qilinadi, undan keyin o‘zgarmas turi va albatta initsializatsiya qismi bo‘lishi kerak.
Misol tariqasida turlangan va literal o‘zgarmaslardan foydalangan holda radius berilganda aylana yuzasini hisoblaydigan programmani keltiramiz.
#include
int main ()
{
const double pi=3.1415;
const int radius=3;
double square=0;
square=pi*radius*radius;
cout<
return 0;
}
Programma bosh funksiyasining boshlanishida ikkita – pi va radius o‘zgarmaslari e’lon qilingan. Aylana yuzasini aniqlovchi square o’zgarmas deb e’lon qilinmagan, chunki u programma bajarilishida o’zgaradi.
Aylana radiusini programma ishlashida o‘zgartirish mo‘ljallanmagan, shu sababli u o‘zgarmas sifatida e’lon qilingan.
Sanab o‘tiluvchi tur
Ko‘p miqdordagi, mantiqan bog‘langan o‘zgarmaslardan foydalanganda sanab o‘tiluvchi turdan foydalanilgani ma’qul. Sanab o’tiluvchi o‘zgarmaslar enum kalit so‘zi bilan aniqlanadi. Mazmuni bo‘yicha bu o‘zgarmaslar oddiy butun sonlardir.
Sanab o‘tiluvchi o‘zgarmaslar C++ standarti bo‘yicha butun turdagi o‘zgarmaslar hisoblanadi. Har bir o‘zgarmasga (songa) mazmunli nom beriladi va bu identifikatorni programmaning boshqa joylarida nomlash uchun ishlatilishi mumkin emas. Sanab o‘tiluvchi tur qo‘yidagi ko‘rinishga ega:
enum { =, ,… = } ;
bu yerda, enum – kalit so‘z (inglizcha enumerate – sanamoq); - o‘zgarmaslar ro‘yxatining nomi; - butun qiymatli konstantalarning nomlari; - shart bo‘lmagan initsializatsiya qiymati (ifoda).
Misol uchun hafta kunlari bilan bog‘liq masala yechishda hafta kunlari dush (dushanba), sesh (seshanba), shor (chorshanba), paysh (payshanba), juma (juma), shanba (shanba), yaksh (yakshanba) o‘zgarmaslarini ishlatish mumkin va ular sanab o‘tiluvchi tur yordamida bitta satrda yoziladi:
enum Hafta {dush, sesh chor, paysh, juma, shanba,yaksh} ;
Sanab o‘tiluvchi o‘zgarmaslar quyidagi xossaga ega: agar o‘zgarmas qiymati ko‘rsatilmagan bo‘lsa, u oldingi o‘zgarmas qiymatidan bittaga ortiq bo‘ladi. Kelishuv bo‘yicha birinchi o‘zgarmas qiymati 0 bo‘ladi.
Initsializatsiya yordamida o‘zgarmas qiymatini o‘zgartirish mumkin:
enum Hafta {dush=8 ,sesh,chor=12 ,paysh=13 , juma=16, shanba, yaksh=20} ;
Bu e’londa sesh qiymati 9, shanba esa 17 ga teng bo‘ladi.
Sanab o‘tiluvchi o‘zgarmaslarning nomlari har xil bo‘lishi kerak, lekin ularning qiymatlari bir xil bo‘lishi mumkin:
enum{no1=0,toza=0,bir,ikki,juft=2 ,uch} ;
O‘zgarmasning qiymati ifoda ko‘rinishda berilishi mumkin, faqat ifodadagi nomlarning qiymatlari shu qadamdagacha aniqlangan bo‘lishi kerak:
enum { ikki=2 ,turt=ikki*2 } ;
O‘zgarmasni qiymatlari manfiy son bo‘lishi ham mumkin: enum {minus2=-2 minus1,nol,bir} ;
Turni boshqa turga keltirish
C++ tilida bir turni boshqa turga keltirishning oshkor va oshkormas yo‘llari mavjud.
Umuman olganda, turni boshqa turga oshkormas keltirish ifodada har xil turdagi o‘zgaruvchilar qatnashgan hollarda amal qiladi (aralash turlar arifmetikasi). Ayrim hollarda, xususan tayanch turlar bilan bog‘liq turga keltirish amallarida xatoliklar yuzaga kelishi mumkin.
Masalan, hisoblash natijasining xotiradan vaqtincha egallagan joyi uzunligi, uni o‘zlashtiradigan o‘zgaruvchi uchun ajratilgan joy uzunligidan katta bo‘lsa, qiymatga ega razryadlarni yo‘qotish holati yuz beradi.
Oshkor ravishda turga keltirishda, o‘zgaruvchi oldiga qavs ichida boshqa tur nomi yoziladi:
#include
int main()
{
int integer_1=54;
int integer_2;
float floating=15.854;
integer_1=(int) floating; // oshkor keltirish;
integer_2=(int) floating // oshkormas keltirish;
cout<<’’yangi integer (oshkor): ‘’<
cout<<’’yangi integer (oshkormas): ‘’<
return 0;
}
Dostları ilə paylaş: |