الأساسي> جيم السؤال.

G

Guest

Guest
حسنا ، وكان لي الشوائب في برنامجي.وقد اطلع على هذا الرمز قليلا :

(
غير الموقعة تشار ط ، ي ، * ptr1 ، * ptr2 ، درجة الحرارة ، x_max ، y_max ؛
غير الموقعة row_index شار ؛
غير الموقعة row_offset كثافة العمليات ، bitmap_offset ؛

row_offset = x_max * row_index ؛
)

في هذه الحالة x_max = 122 ، وrow_index يختلف من 0 إلى 3.

خلال هذه تتضاعف ، row_offset حصلت على قيم خاطئة.عن طريق تغيير row_index إلى عدد صحيح غير الموقعة ، فإن المشكلة قد انتهت.

يمكن للشخص أن يفسر لماذا row_index بد أن يكون هناك كثافة العمليات بدلا من شار ، وx_max لا؟

Thnx.راجع للشغل : أنا باستخدام codevisionوأضاف بعد 20 دقيقة :حسنا ، أنا كتبت قليلا برنامج اختبار لمعرفة ما يحدث.

غير الموقعة ك كثافة العمليات ، ض ؛
غير الموقعة تشار ط ، ي ، خ ، ذ ؛

(
س = 122 ؛
ط = 122 ؛

ل(ذ = 0 ؛ ذ <8 ؛ ذ )
(
ض = س * ذ ؛
putchar (ض>> 8) ؛
putchar (ض & 0x00FF) ؛
)

/ / وكان انتاج : 0000 ، 007A ، 00F4 ، 006E ، 00e8 ، 0062 ، 00DC ، 0056

ض = 122 ؛

ل(ي = 0 ؛ ي <8 ؛ ي )
(
ك = ض * ي ؛
putchar (ك>> 8) ؛
putchar (ك & 0x00FF) ؛
)
)

/ / وكان انتاج : 0000 ، 007A ، 00F4 ، 016E ، 01e8 ، 0262 ، 02DC ، 0356يبدو أن واحدا من المتغيرات اثنين من الضروري أن تكون هناك كثافة العمليات ، فإنه لا يهم أي واحد.
لا المترجم استخدام المتغيرات أيضا للتخزين الموقت؟

 
كثافة العمليات = uchar * uchar ؛
عندما ترى هذا المترجم * ، فإنه لا الضرب والنتيجة هي نوع من uchar (8bits القيمة) واعتقد ان 3 * 122 يحتاج الى اكثر من 8bits التخزين.ماذا سوف تفعل المترجم في هذه الحالة فإنه سيتم اقتطاع البتات أهم وتبقي فقط هم 8least.
لالاحالة ، والعثور على الطرف الأيسر غير الموقعة كثافة العمليات بحيث أنه سيتم توسيع uchar لuint من الأصفار.ولهذا السبب كانت النتيجة اختلفت.
لأكثر من يأتي يجب أن يلقي أحد المعاملات مضاعفة نتيجة لنوع من أجل تعزيز opernad الأخرى نتيجة لنوع وتحافظ على البيانات قبل اقتطاع.
تمنيات ،
Amraldo.

 
يبدو وكأنه مترجم الخاص بك ليست متوافقة مع مقاييس جيم.وينبغي تعزيز الخاص بك تلقائيا اثنين من القيم غير الموقعة شار إلى كثافة العمليات قبل أن يضاعف لهم.

وCodeVisionAVR 1.24.7 المستعمل يصف وضع المترجم "تعزيز شار إلى كثافة العمليات" لمقاييس التوافق.انها محاولة.

 

Welcome to EDABoard.com

Sponsor

Back
Top