Tayanch so’z va iboralar: Tur, kompilator, transformatsiya, toraytiruvchi transformatsiya, kengaytiruvchi transformatsiya, konvertatsiya, aniq konvertatsiya, yashirin konvertatsiya 5.1. Turlar. Ma'lumotlar turlarini ko'rib chiqishda ma'lum bir turdagi qanday qiymatlarga ega bo'lishi va qancha bayt xotirani egallashi ko'rsatilgan. Oxirgi mavzuda arifmetik amallar ko'rib chiqildi. Endi har xil turdagi ma'lumotlarga qo'shish amalini qo'llaymiz:
1
2
byte a = 4;
int b = a + 70;
Operatsiya natijasi, kutilganidek, 74 raqamidir.
Ammo endi bayt tipidagi ikkita obyektga qo'shishni qo'llashga harakat qilaylik :
1
2
byte a = 4;
byte b = a + 70; // xató
Bu yerda faqat qo'shish natijasini oladigan o'zgaruvchining turi o'zgargan - int dan baytga. Biroq, dasturni kompilyatsiya qilinganda, kompilator xatolik haqida xabar beradi. Va agar Visual Studio'da ishlayonayotgan bo'lsa, muhit ikkinchi qatorni qizil chiziq bilan chizib, unda xatolik borligini ko'rsatadi. Ishlayotganda, ma'lum bir turdagi saqlashi mumkin bo'lgan qiymatlar oralig'ini hisobga olish kerak. Ammo bu holda, olinishi kutilayotgan 74 raqami bayt tipidagi qiymatlar oralig'ida, shunga qaramay, xatolik mavjud. Chunki, qo‘shish (va ayirish) operatsiyasi, agar operatsiya int dan kichik yoki unga teng bo‘lgan butun sonli ma’lumotlar turlarini (ya’ni bayt, short, int turlarini) o‘z ichiga olsa, int tipidagi qiymatni qaytaradi. Shuning uchun operatsiya natijasi a + 70 xotirada uzunligi 4 bayt bo'lgan obyekt bo'ladi. Keyin bu obyektni bayt tipiga ega bo'lgan va xotirada 1 baytni egallagan b o'zgaruvchisiga belgilashga harakat qilamiz.
Va bu vaziyatdan chiqish uchun siz turdagi konvertatsiya operatsiyasini qo'llashingiz kerak. Turni o'zgartirish operatsiyasi qavslar ichida qiymat o'zgartirilishi kerak bo'lgan turni ko'rsatishni o'z ichiga oladi:
Shunday qilib, turni o'zgartirish operatsiyasini qo'llash orqali oldingi misolni o'zgartiramiz: