رسم بياني للمقارنة:
أساس للمقارنة | نوع الصب | نوع التحويل |
---|---|---|
المعنى | يتم تعيين نوع بيانات واحد إلى آخر من قبل المستخدم ، وذلك باستخدام مشغل الإرسال ثم يطلق عليه "Type Casting". | ويسمى تحويل نوع بيانات إلى آخر تلقائيًا بواسطة المحول البرمجي "تحويل النوع". |
مستعمل | يمكن أيضًا استخدام نوع الكتابة على نوعين من أنواع البيانات "غير المتوافقة". | يمكن تنفيذ تحويل النوع فقط عندما يكون نوعان من البيانات "متوافقين". |
المشغل أو العامل | لإدخال نوع بيانات إلى آخر ، مطلوب مشغل الصب '(). | لا المشغل المطلوبة. |
حجم أنواع البيانات | يمكن أن يكون نوع الوجهة أصغر من نوع المصدر. | هنا يجب أن يكون نوع الوجهة أكبر من نوع المصدر. |
نفذت | يتم ذلك أثناء تصميم البرنامج. | يتم ذلك بشكل صريح أثناء تجميع. |
نوع التحويل | تضييق التحويل. | توسيع التحويلات. |
مثال | كثافة العمليات بايت ب ؛ ... ... ب = (بايت) | int a = 3؛ تعويم b ب = أ. // value in b = 3.000. |
تعريف نوع الصب
يمكن تعريف نوع الكتابة باسم ، صب نوع بيانات واحد إلى نوع بيانات آخر ، من قبل المبرمج ، في وقت تصميم البرنامج. Aa التحويل التلقائي لنوع بيانات واحد إلى آخر ، ليس من الممكن في كل وقت. قد يكون شرط "نوع الوجهة" أصغر من "نوع المصدر" ، لذا على المبرمج أن يلقي صراحةً نوع البيانات الأكبر إلى نوع بيانات أصغر باستخدام عامل الصب "()". ونظرًا لأن نوع البيانات الأكبر يتم تعديله إلى نوع البيانات الأصغر ، فإنه يطلق عليه أيضًا "تضييق التحويل".
target_type = (target_type) variable / value // target type هو نوع تريد تحويل نوع المصدر إليه وهو دائمًا نوع الوجهة.
دعونا نفهم ذلك مع مثال. أنت تريد تحويل نوع البيانات 'int' إلى 'byte' ، الآن ، لأن 'البايت' أصغر من 'int' ، لا يُسمح بتحويل النوع. هنا ، كان علينا تحويل "int" ضمنيًا إلى "بايت" باستخدام مشغّل الصب "()". وبما أن 'int' أكبر من 'byte' ، فسيتم تقليل حجم 'int' إلى نطاق int int.
كثافة العمليات بايت ب ؛ ... ... b = (byte) a؛
عندما يتم تحويل 'float' إلى 'int' ، يتم اقتطاع حجم الطفو ، حيث أن 'int' لا تخزن القيمة الكسرية. إذا كان حجم نوع الوجهة صغيرًا جدًا بالنسبة لنوع المصدر ليتم احتواؤه ، فسيكون نوع المصدر هو نوع الوجهة "نطاق". يمكن أيضًا استخدام الصب عند توافق أنواع البيانات ، ومن الممارسات الجيدة استخدام صب النوع حيثما تكون هناك حاجة إلى تحويل النوع.
تعريف تحويل النوع
تحويل النوع هو التحويل التلقائي لنوع بيانات واحد إلى آخر عند اللزوم ، بشكل صريح من قبل المترجم. ولكن هناك شرطان يجب الوفاء بهما قبل تحويل النوع.
- يجب أن يكون نوع المصدر والوجهة متوافقًا.
- يجب أن يكون نوع الوجهة أكبر من نوع المصدر.
يجب أن يفي هذان الشرطان بتحويل النوع ، ويسمى هذا النوع من التحويل بـ "توسيع التحويلات" ، حيث يتم تحويل النوع الأصغر إلى نوع أكبر ، ويتم توسيع النوع. بالنسبة إلى هذا التحويل الواسع ، تكون الأنواع الرقمية مثل 'int' ، 'float' متوافقة مع بعضها البعض بينما تكون الأرقام الرقمية char و boolean أو char to boolean غير متوافقة أيضًا.
هذا المثال سيوفر رؤية أفضل لهذا
int a = 3؛ تعويم b ب = أ. // value in b = 3.000.
هنا ، يتم تحويل 'int' إلى 'float' وهو أكبر من 'int' ، لذلك يحدث نوع توسيع المصدر. هنا ، لا يلزم وجود مشغل إرسال كما يفعل المترجم بشكل صريح.
الاختلافات الرئيسية بين نوع الصب والتحويل
- والفرق الأساسي الذي يميز نوع الصب من تحويل النوع هو أن صب النوع هو تحويل من نوع لآخر ، يتم تنفيذه بواسطة المبرمج. من ناحية أخرى ، فإن تحويل النوع هو تحويل من نوع لآخر ، يتم تنفيذه بواسطة المحول البرمجي أثناء التحويل البرمجي.
- يمكن تطبيق نوع الكتابة على أنواع البيانات التي قد لا تكون متوافقة مع بعضها البعض ، ولكن يمكن تطبيق تحويل النوع فقط على أنواع البيانات التي تتوافق مع بعضها البعض.
- يتطلب تحويل نوع إلى آخر في صب النوع مشغِّل الصب "()" ، بينما لا يتطلب تحويل نوع بيانات واحد إلى آخر في تحويل النوع أي مشغل.
- أثناء تحويل نوع بيانات إلى آخر في نوع الكتابة ، يمكن أن يكون نوع الوجهة أكبر أو أصغر من نوع المصدر. من ناحية أخرى ، يجب أن يكون نوع الوجهة أكبر من نوع المصدر في تحويل النوع.
- يتم تحويل نوع واحد إلى نوع آخر أثناء التشفير في نمط الكتابة بينما يتم تحويل نوع واحد إلى آخر أثناء عملية التحويل النوعي بشكل صريح أثناء التحويل البرمجي.
- يطلق على نوع الكتابة تحويل التضييق لأن هنا يمكن أن يكون نوع الوجهة أصغر من نوع المصدر في حين أن نوع التحويل يُسمى اتساع التحويل لأنه هنا ، يجب أن يكون نوع الوجهة أكبر من نوع المصدر.
استنتاج:
يمكن استنتاج أن نوع التحويل ونوع الكتابة ، كلاهما يؤديان مهمة تحويل نوع بيانات واحد إلى آخر ولكنهما يختلفان من حيث أن صب النوع يتم بواسطة المبرمج ، باستخدام مشغل المصبوب "()" ويتم تحويل النوع من قبل مترجم ، وأنه لا يستخدم أي مشغل.