التحويل بين الأنواع (Type Casting) في لغة C: التحويل الضمني والصريح مع أمثلة

Amine
23/10/2024

ما هو التحويل بين الأنواع (Type Casting) في لغة C؟

التحويل بين الأنواع (Type Casting) في لغة C هو عملية تحويل نوع متغير من نوع بيانات إلى نوع آخر. يتم ذلك لتجنب أي مشاكل تتعلق بأنواع البيانات المختلفة عند إجراء العمليات الحسابية أو عند نقل البيانات بين المتغيرات ذات الأنواع المختلفة.

أنواع التحويل بين الأنواع في C

يوجد نوعان من التحويل بين الأنواع في لغة C:

  • التحويل الضمني (Implicit Type Casting): يحدث عندما يقوم المترجم بتحويل نوع البيانات تلقائيًا دون تدخل المبرمج.
  • التحويل الصريح (Explicit Type Casting): يتم بواسطة المبرمج باستخدام صيغة معينة لتحويل نوع المتغير بشكل مباشر.

التحويل الضمني (Implicit Type Casting)

يحدث التحويل الضمني عندما يقوم المترجم بتحويل نوع بيانات أصغر إلى نوع بيانات أكبر بشكل تلقائي. على سبيل المثال، عند جمع عدد صحيح مع عدد عشري، يقوم المترجم بتحويل العدد الصحيح إلى عدد عشري قبل إجراء الحساب.

#include <stdio.h>

int main() {
    int a = 5;
    float b = 4.5;
    
    // التحويل الضمني
    float result = a + b;  // يتم تحويل a إلى float
    printf("النتيجة = %.2f\n", result);
    
    return 0;
}

الإخراج

النتيجة = 9.50

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

يتم التحويل الصريح عندما يقوم المبرمج بتحويل نوع المتغير يدويًا باستخدام صيغة التحويل بين الأنواع. يتم ذلك باستخدام الأقواس لتحويل المتغير إلى النوع المطلوب.

الصيغة العامة للتحويل الصريح هي:

(نوع_البيانات) المتغير;

مثال على التحويل الصريح:

#include <stdio.h>

int main() {
    float x = 5.75;
    int y;
    
    // التحويل الصريح
    y = (int) x;  // تحويل x من float إلى int
    printf("القيمة بعد التحويل = %d\n", y);
    
    return 0;
}

الإخراج

القيمة بعد التحويل = 5

الفرق بين التحويل الضمني والصريح

  • التحويل الضمني: يتم تلقائيًا بواسطة المترجم عندما يكون التحويل آمنًا ولا يؤدي إلى فقدان البيانات.
  • التحويل الصريح: يتم بواسطة المبرمج عند الحاجة لتحويل نوع بيانات بشكل صريح، وقد يؤدي إلى فقدان بعض الدقة كما في المثال السابق.

مثال على كلا النوعين من التحويل

#include <stdio.h>

int main() {
    int a = 10;
    char b = 'A';
    float result;
    
    // التحويل الضمني
    result = a + b;  // يتم تحويل b إلى int
    printf("التحويل الضمني: النتيجة = %.2f\n", result);
    
    // التحويل الصريح
    result = (float) a / 3;  // يتم تحويل a إلى float
    printf("التحويل الصريح: النتيجة = %.2f\n", result);
    
    return 0;
}

الإخراج

التحويل الضمني: النتيجة = 75.00
التحويل الصريح: النتيجة = 3.33

الخاتمة

في هذا الدرس، تعلمنا الفرق بين التحويل الضمني والتحويل الصريح في لغة C. التحويل الضمني يتم تلقائيًا من قبل المترجم عندما يكون التحويل آمنًا، بينما التحويل الصريح يتم بواسطة المبرمج ويمكن أن يؤدي إلى فقدان بعض الدقة. يجب استخدام التحويل الصريح بحذر لتجنب الأخطاء المحتملة في البرمجة.

التعليقات

اترك تعليقاً