القائمة الرئيسية

الصفحات

يُعرف تحويل نوع بيانات إلى آخر باسم تحويل النوع أو تحويل النوع. على سبيل المثال ، إذا كنت تريد تخزين قيمة "طويلة" في عدد صحيح بسيط ، فيمكنك كتابة cast "long" إلى "int". يمكنك تحويل القيم من نوع إلى آخر بشكل صريح باستخدام عامل الصب كما يلي -

(type_name) expression

ضع في اعتبارك المثال التالي حيث يتسبب عامل التشغيل في تقسيم متغير عدد صحيح على آخر ليتم إجراؤه كعملية فاصلة عائمة -


#include <stdio.h>

main() {

   int sum = 17, count = 5;
   double mean;

   mean = (double) sum / count;
   printf("Value of mean : %f\n", mean );
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

Value of mean : 3.400000

وتجدر الإشارة هنا إلى أن عامل الصب له الأسبقية على القسمة ، لذلك يتم تحويل قيمة المجموع أولاً إلى النوع مزدوج ، وفي النهاية يتم تقسيمها على العدد الذي ينتج عنه قيمة مزدوجة.

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

ترقية عدد صحيح

ترقية عدد صحيح هي العملية التي يتم من خلالها تحويل القيم من نوع عدد صحيح "أصغر" من int أو غير موقعة int إلى int أو int . ضع في اعتبارك مثالاً لإضافة حرف بعدد صحيح -


#include <stdio.h>

main() {

   int  i = 17;
   char c = 'c'; /* ascii value is 99 */
   int sum;

   sum = i + c;
   printf("Value of sum : %d\n", sum );
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

Value of sum : 116

هنا ، قيمة المجموع هي 116 لأن المترجم يقوم بترقية عدد صحيح ويحول قيمة 'c' إلى ASCII قبل تنفيذ عملية الإضافة الفعلية.

التحويل الحسابي المعتاد

و التحويلات الحسابية المعتادة تتم ضمنيا للادلاء القيم الخاصة بها إلى نوع شائع. يقوم المترجم أولاً بتنفيذ ترقية عدد صحيح ؛ إذا كانت المعاملات لا تزال تحتوي على أنواع مختلفة ، فسيتم تحويلها إلى النوع الذي يظهر أعلى مستوى في التسلسل الهرمي التالي -


لا يتم إجراء التحويلات الحسابية المعتادة لمشغلي التخصيص ، ولا للعوامل المنطقية && و ||. دعونا نأخذ المثال التالي لفهم المفهوم -


#include <stdio.h>

main() {

   int  i = 17;
   char c = 'c'; /* ascii value is 99 */
   float sum;

   sum = i + c;
   printf("Value of sum : %f\n", sum );
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

Value of sum : 116.000000

هنا ، من السهل أن نفهم أن c الأول يتم تحويله إلى عدد صحيح ، ولكن نظرًا لأن القيمة النهائية مزدوجة ، يتم تطبيق التحويل الحسابي المعتاد ويقوم المترجم بتحويل i و c إلى "float" ويضيفهم للحصول على نتيجة "float".


الصفحة التالية                                                                                       الصفحة السابقة  

هل اعجبك الموضوع :

تعليقات