تحويل الأنواع - الجزء الأول
جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 14 من 74.
تحويل النوع (Type casting) هو عملية تحويل قيمة من نوع بيانات إلى آخر.
في ++C، يمكننا تحويل الأعداد الصحيحة إلى أعداد عشرية، والأعداد العشرية إلى أعداد صحيحة، والمزيد. هناك نوعان من التحويل (casting): تحويل ضمني (تلقائي) وتحويل صريح (يدوي).
على سبيل المثال Integer to Double:
التحويل الضمني (التلقائي):
int number = 5;
double decimal = number; // تصبح تلقائياً 5.0
// مع الحساب
int x = 7;
double result = x / 2.0; // النتيجة هي 3.5ملاحظة: عند قسمة قيمتين من نوع int، تقوم لغة C++ بإجراء قسمة صحيحة — حيث يتم تجاهل الجزء العشري. على سبيل المثال، 7 / 2 تعطي 3، وليس 3.5. للحصول على نتيجة عشرية، يجب أن يكون أحد المعاملات على الأقل من نوع double (على سبيل المثال، 7 / 2.0 تعطي 3.5).
التحويل الصريح (اليدوي) Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // تصبح 9 (يتم اقتطاع الجزء العشري)
// مع الحساب
double price = 19.99;
int roundedPrice = (int) price; // تصبح 19الأسلوب المفضل في ++C الحديثة: بدلاً من التحويل البرمجي (cast) بأسلوب لغة C (int) decimal، من الأفضل استخدام static_cast<>()، والذي يعد أكثر أماناً ووضوحاً بشأن نيتك البرمجية:
double decimal = 9.7;
int number = static_cast<int>(decimal); // تصبح 9 (يتم اقتطاع الجزء العشري)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // تصبح 19ملاحظة: كل من (int) value و static_cast<int>(value) ينتجان نفس النتيجة هنا، ولكن static_cast<>() هو النهج الموصى به في لغة C++ الحديثة لأنه يجعل عملية التحويل مرئية بوضوح ويتم فحصها بواسطة المترجم (compiler).
التحدي
مبتدئاكتب برنامج C++ يوضح تحويل النوع (type casting). قم بما يلي:
قم بتحويل المتغير price إلى int وقم بتخزين النتيجة في متغير جديد يسمى intPrice.
ورقة مرجعية
تحويل النوع (Type casting) يقوم بتحويل القيم من نوع بيانات إلى آخر.
التحويل الضمني (التلقائي) — يحدث تلقائياً:
int number = 5;
double decimal = number; // يصبح تلقائياً 5.0
int x = 7;
double result = x / 2.0; // النتيجة هي 3.5 (قسمة int/int تتجاهل الجزء العشري)التحويل الصريح (اليدوي) — بأسلوب لغة C و static_cast الحديث:
double price = 19.99;
int a = (int) price; // أسلوب C: يصبح 19
int b = static_cast<int>(price); // المفضل في C++ الحديثة: يصبح 19ملاحظة: تحويل double إلى int يؤدي إلى بتر (حذف) الجزء العشري. يُفضل استخدام static_cast<>() في لغة C++ الحديثة من أجل الوضوح وسلامة المترجم (compiler safety).
جرّب بنفسك
#include <iostream>
int main() {
// التصريح عن المتغيرات وتهيئتها
double price = 99.99;
int intPrice = ?; // تحويل صريح من double إلى int
// طباعة القيم
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةمراجعة - تهيئة المتغيراتتحويل الأنواع - الجزء الأولتحويل الأنواع - الجزء الثاني