اعمل كمطور مواقع بتقنية ASP.net واخيرا انتقلت من فيجوال بيسك دوت نت الى C#.
سؤالي هو لماذا لايمكن اجراء العمليات الحسابية على الانواع Byte - short سواء في الجافا او C#، نعم اعرف حل المشكلة لكني لا اعرف السبب العلمي لذلك.
على سبيل المثال تم تعريف 3 متغيرات من نوع short ولكن عند محاولة جمع قيمة المتغير x مع المتغير y واسناد الناتج الى المتغير z يظهر الخطا التالي:
;short x = 1, y = 1
short z = x + y; // Compile-time error
واذا كان لايتم استخدام المتغيرات من النوع Byte و Short فما هي استخداماتهم !!
وشكرا لكم
شكرا لك استاذ عبد الرحمن
في الكود التالي تم جمع قيميتن من نوع واحد int واسناد حاصل الجمع الى متغير من نوع int ايضا ومع ذلك لم يحدث اي خطا برمجي:
;int numberOne, numberTwo,sum
;numberOne = 10
;numberTwo = 20
// correct
;sum = numberOne + numberTwo
;(Console.WriteLine(sum
في حالة النوع int لأنه نوع يحجز البت الأخير للإشارة وبالتالي فإن قيمته تتراوح من-2,147,483,648 إلى 2,147,483,647 وبالتالي حتى لو جمعت أعظم قيمتين لمتغيرين من نوع int فإن الناتج يمكن أن يستوعبه النوع int نفسه لأنه يحوله إلى الجهة السالبة
بينما في النوع بايت و شورت قيمهم تتراوح ما بين 0 وأعظم عدد تستوعبه الخانات وبالتالي أي زيادة يعتبر طفحان لهذا فإنه يفترض أن ناتج جمع متحولين من النوع byte أو short أو حتى int هو int ولهذا إما أن تجعل نوع متغير النتيجة int أو تعرفه ب var أو تقوم بتحويل قسري مع توقع ضياع بيانات.
التعليقات