العودة إلى الدورة

قواعد تحويل الأنواع (Type Casting)

لغة C: من الصفر إلى الاحتراف - الدليل الشامل للمبتدئين

الدرس 13: قواعد تحويل الأنواع (Type Casting)

يمكن أن يؤدي خلط أنواع البيانات المختلفة في تعبير واحد إلى تحويل النوع إما ضمنياً أو صراحةً (Casting).

التحويل الضمني (Coercion)

يتم تلقائياً بواسطة المترجم لمنع فقدان البيانات أو الدقة. يحدث هذا عند ترقية نوع ذو رتبة منخفضة إلى نوع ذو رتبة أعلى (مثل int إلى float).

تسلسل الترقية (مبسط): char < int < long < float < double

c int a = 10; double b = 3.5; double result = a + b; // يتم ترقية 'a' (10) ضمنياً إلى double (10.0)

التحويل الصريح (Type Casting)

عندما تحتاج إلى فرض تحويل، خاصة لتحويل نوع ذو رتبة أعلى إلى رتبة أقل (مما قد ينطوي على فقدان بيانات).

القاعدة: (target_data_type) expression

مثال: إصلاح قسمة الأعداد الصحيحة

c int num1 = 10; int num2 = 3;

// مشكلة: قسمة الأعداد الصحيحة تؤدي إلى 3 float avg1 = num1 / num2; // avg1 هو 3.0

// حل: تحويل أحد الطرفين صراحةً إلى float float avg2 = (float)num1 / num2; // avg2 هو 3.333...

تحويل المؤشرات (نظرة مسبقة)

يعد التحويل ضرورياً أيضاً عند التعامل مع دوال تخصيص الذاكرة مثل malloc ، على الرغم من أن معايير C الحديثة تجعل هذا اختيارياً في الغالب.