الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله في القيم المتغيرات في برنامج بالسي++

بدأه user2000 في 1 مايو 2008 · 4 رد · 726 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لوسمحتوا بغيت مساعده انا عامل برنامج بالسي بلس بلس

وبرنامج طوييييييييييل مرررره وفكره معقده وكلها حسابات وسالفه

الخلل عندي في ان المتغيرات احيانا يكون المتغير بعد عده عمليا راااح يكووون كبير ولكن للاسف يتغير الرقم

مثال

int x;

x=49909403233;

cout<<x;

في الرن يطلع الرقم

-1630204319

هذا المثال بس عشان ابين لكم ان الرقم تغير في الرن عما هو موجود بالكود

فهذا ماحصل لي خلال البرمجه في برنامجي..

القيم بدأت تتغير والمشكله ان هذه القيم تعتمد عليها حسابات اخرى

وجربت اغيره long

لكن مافي فايده :wacko:

يااااااااااااااااااااليت لو احد يساعدي ويقولي ما الحل وايش هو الخلل وليه القيمه تغيرت

:mad: والله برنامجي متعطل عشان هالمشكله

بلللييييييييييييييييييييييييييييييييييييييييييييز سااااااااعدوني :S

#2

بالله عليك ... 49909403233 == 0xB9ED50E61 أي 5 بايت أي لا يمكن وضعها في متغير بحجم int .

غير نوع المتغير الى LONGLONG أي بطول 64-بت أو 8 بايت او الى النوع double .

اذا كانت القيمة التي تخزن في هذا المتغير دائما موجبة فمن الافضل جعله unsigned لزيادة السعة .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

عليكم السلام

-------

رايدة اول شي تقرأ المشاركة التالية وتشوف ردي عليها يمكن بتفيدك

موضوع ذا صلة

,.,.,.,.,.,.,.,.,.,.,.

أما بخصوص المشكلة اللي صارت تحديداً فهي عملية Wrapping لف يعني..بتصير هذه العملية لما بيتجاوز المتغير (من حيث المساحة في الذاكرة) القيمة المحتملة للتخزين..مثلاً المتغير من نوع char يمكن يحمل قيمة لحدة 255 بس لما بتخزن قيمة اكبر من هذي القيمة المتوقعة رايحة تصير عملية اللف Wrapping فيقوم النظام بوضع اصغر قيمة ممكن ان يحملها هذا المتغير..أو ربما قيمة عشوائية مناسبة للحجم..

----------

اطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#4

مشكووووووووورين على الرد

لكن انا مجرب كل الانواع قبل مااضيف الموضوع ومافي فايده

والان جربت long ,double,unsigned

بس مافي فايده يوم جربت long

التاتج طلع======> -1630204319

جربت unsigned

الناتج طلع====2664762977

جربتdouble

الناتج طلع =====

4.99094e+10

يعني الرقم متغييييييييييييييييييييير

في كل الاحواااااااااال يعني وش اسوي والله زهقت من البرنامج فكرتي صحيحه 100

والتسلين السبت الجاااااااااااي بللللللللللللللليز

اريد حلا!!!! :wacko:

#5

إستخدم مثل ما قال أخوي قيم ماستر

unsigned long long int i = 49909403233;

أو في بعض الكمبايلر هذا التعريف هو نفسه مثل التعريف التالي

unsigned __int64 i = 49909403233;

لكن أنا أفضّل الأول

وشكراً

تم تعديل هذه المشاركة بواسطة b.m.s في 1 مايو 2008 في 23:23

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…