ტიპების დაყვანის ოპერატორი (cast operator) 

ტიპის დაყვანა – ესაა ერთი ტიპის მეორე ტიპად გარდაქმნის ოპერაცია. ის გამოიყენება მონაცემების შეუთავსები ტიპების მიმართ. ტიპების ასეთ გარდაქმნას ცხადი (აშკარა) ეწოდება. ტიპების დაყვანის ოპერატორის სინტაქსია: (საბოლოო_ტიპი) გამოსახულება;
აქ საბოლოო_ტიპი მიუთითებს თუ რომელ ტიპად უნდა გარდაიქმნას მითითებული გამოსახულების შედეგი. მოყვანილი პროგრამით სრულდება ტიპების გარდაქმნის დემონსტრირება.

{
// პროგრამა 2.23
// პროგრამაში ხდება ტიპების გარდაქმნა შეუთავსებ ტიპებს შორის double wiladi1, wiladi2;
byte baiti; int mteli;
char simbolo;

wiladi1 = double.Parse(textBox1.Text); wiladi2 = double.Parse(textBox2.Text);
// double ტიპის გამოსახულება გარდაიქმნება int ტიპად
mteli = ( int ) ( wiladi1 / wiladi2 ); // აქ ხდება ინფორმაციის დაკარგვა label1.Text = mteli.ToString();
// აქ ინფორმაცია არ იკარგება, რადგან 50 იმყოფება byte ტიპის დასაშვებ დიაპაზონში mteli = 50;
baiti = ( byte ) mteli;
label2.Text = baiti.ToString();
// აქ ინფორმაცია იკარგება, რადგან 300 სცილდება byte ტიპის დასაშვებ დიაპაზონს
mteli = 300; baiti = ( byte ) mteli;
label3.Text = baiti.ToString();

baiti = byte.Parse(textBox3.Text);
simbolo = ( char ) baiti; // ტიპების დაყვანის ოპერაცია შეუთავსებ ტიპებს შორის label4.Text = baiti.ToString();
}

mteli = ( int ) ( wiladi1 / wiladi2 ); სტრიქონში double ტიპის გამოსახულების შედეგი დაიყვანება int ტიპზე. მრგვალი ფრჩხილების მითითება, რომლებშიც მოთავსებულია wiladi1/wiladi2, აუცილებელია. წინააღმდეგ შემთხვევაში, int ტიპზე დაიყვანება მხოლოდ wiladi1 ცვლადი. ამ შემთხვევაში სრულდება ტიპების დაყვანის ოპერაცია, რადგან double ტიპის მნიშვნელობა int ტიპის მნიშვნელობად ავტომატურად არ გარდაიქმნება.
როცა ტიპების გარდაქმნის დროს სრულდება კუმშვადი გარდაქმნა, მაშინ ინფორმაცია შეიძლება დაიკარგოს. მაგალითად, თუ long ტიპის დაყვანისას int ტიპზე, long ტიპის მქონე ცვლადის მნიშვნელობა არ ეტევა int ტიპის დიაპაზონის ფარგლებში, მაშინ უფროსი თანრიგის ბიტები დაიკარგება, შედეგად, იკარგება ინფორმაციაც. როცა ხდება მცურავწერტილიანი მნიშვნელობის დაყვანა მთელ მნიშვნელობაზე, მაშინ წილადი ნაწილი იკარგება. მაგალითად, თუ მნიშვნელობა 7.85 გარდაიქმნება მთელ მნიშვნელობად, მაშინ შედეგი იქნება 7, ხოლო წილადი 0.85 იკარგება.
ზემოთ მოყვანილ სტრიქონში ( wiladi1 / wiladi2 ) გამოსახულების შედეგი დაიყვანება int ტიპზე, რაც იწვევს წილადი ნაწილის დაკარგვას. შემდეგ, როცა baiti ცვლადს ენიჭება მნიშვნელობა 50, ინფორმაცია არ იკარგება, რადგან ის მოთავსებულია byte ტიპის დასაშვები მნიშვნელობების დიაპაზონში. მაგრამ, თუ baiti ცვლადს მივანიჭებთ მნიშვნელობას 300 (მისი ორობითი წარმოდგენაა 00000001 00101100), მაშინ ადგილი ექნება ინფორმაციის დაკარგვას, რადგან 300 აღემატება byte ტიპის მაქსიმალურ მნიშვნელობას. ამ შემთხვევაში baiti ცვლადს მიენიჭება 44 (მისი ორობითი წარმოდგენაა 00101100), რადგან დარჩება 300-ის უმცროსი ბაიტი, უფროსი კი ჩამოიჭრება. დაბოლოს, byte ტიპის გარდაქმნისას char ტიპად ინფორმაცია არ იკარგება.

ავტორი: რ.სამხარაძე

0Shares