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

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

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

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

هناك نوعان رئيسيان لتحويل أنواع البيانات (type casting):

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

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

يحدث التحويل الضمني (Implicit casting) تلقائياً عند التحويل من نوع بيانات أصغر إلى نوع بيانات أكبر:

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):

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

double decimal_num = 5.65;
int num;

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

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

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

(target_type) value

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

challenge icon

التحدي

سهل

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

  1. يعلن عن متغير double باسم result ويضبط قيمته على 5.65
  2. يعلن عن متغير int باسم grade
  3. يسند قيمة result إلى grade باستخدام التحويل الصريح (explicit casting)
  4. يطبع قيمة grade مع الرسالة "The grade is: " باستخدام printf

ورقة مرجعية

التحويل الضمني (Implicit casting) — تحويل تلقائي من نوع أصغر إلى نوع أكبر:

int num = 10;
double decimal_num = num; // يصبح 10.0

مسار التحويل الضمني الشائع: char → int → long → float → double

التحويل الصريح (Explicit casting) — تحويل يدوي باستخدام (target_type) value:

double decimal_num = 5.65;
int num = (int)decimal_num; // يصبح 5 (يتم قطعه، وليس تقريبه)

استخدم التحويل الصريح عند التحويل من نوع أكبر إلى نوع أصغر، حيث قد يحدث فقدان للبيانات.

جرّب بنفسك

#include <stdio.h>

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

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

جميع دروس Fundamentals