Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحويل الأنواع (Type Casting) - الجزء 1

جزء من قسم Fundamentals في رحلة C على Coddy. الدرس 13 من 63.

تتيح لك عملية casting للأنواع في C تحويل قيمة من نوع بيانات إلى نوع بيانات آخر. وهذا مفيد عندما تحتاج إلى إجراء عمليات بين أنواع بيانات مختلفة.

هناك نوعان رئيسيان من تحويل الأنواع:

  1. التحويل الضمني (automatically)
  2. التحويل الصريح (يدويًا)

لنبدأ بالتحويل الضمني:

يحدث Implicit casting automatically عند التحويل من نوع بيانات أصغر إلى نوع أكبر:

int num = 10;
double decimal_num;

// التحويل الضمني من int إلى double
decimal_num = num;

بعد تنفيذ التعليمات البرمجية أعلاه، ستحتوي decimal_num على القيمة 10.0

يعمل هذا لأن double يمكنه تخزين جميع القيم الممكنة لـ int دون فقدان أي بيانات. التحويل آمن، لذا تنفذه C تلقائيًا.

مسارات التحويل الضمني الشائعة:

  • char → int → long → float → double

لنلقِ الآن نظرة على التحويل الصريح:

يتم إجراء Explicit casting يدويًا عن طريق وضع نوع البيانات الهدف بين قوسين قبل القيمة التي تريد convert إليها. وهذا ضروري عند التحويل من نوع بيانات أكبر إلى نوع أصغر، حيث قد يحدث فقدان للبيانات:

double decimal_num = 5.65;
int num;

// تحويل صريح من double إلى int
num = (int)decimal_num;

بعد تنفيذ التعليمات البرمجية أعلاه، ستكون قيمة num هي 5

لاحظ أن الجزء العشري يكون truncated (غير rounded) عند إجراء casting من double إلى int. صيغة إجراء explicit casting هي:

(target_type) value

لأن هذا التحويل قد يؤدي إلى فقدان البيانات، تتطلب C أن تجريه بشكل صريح. وهذا يُخبر المترجم بأنك على دراية باحتمال فقدان البيانات.

challenge icon

التحدي

سهل

اكتب برنامجًا يقوم بما يلي:

  1. يُعرّف متغيرًا من النوع double باسم result ويعيّن له القيمة 5.65
  2. يُعرّف متغيرًا من النوع int باسم grade
  3. يُسنِد قيمة result إلى grade باستخدام explicit casting
  4. يطبع قيمة grade مع الرسالة "The grade is: " باستخدام printf

جرّب بنفسك

#include <stdio.h>

int main() {
    double result = 5.65;
    int grade;
    
    // استخدم التحويل الصريح لتحويل result (double) إلى grade (int)
    
    printf("The grade is: %d\n", grade);
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals

تدرّب بنفسك: مترجم C عبر الإنترنت