• 0
العُبد

طلب شرح عمليات الزيادة السابقة واللاحقة

سؤال

السلام عليكم ..

الأخوة الأعزاء تراني ضايع مع هالشكل مسائل:
 

int x= 5, y=2, k=5, m=1;k/= m * x++ - ++ ycout << x << " " << y << " " << k << " " << m << endl;

:(

يا ريت يقدر أحد يشرح لي بشكل مبسط
k/= m * x++ - ++ y
هذا شنو هالبلوة :(

السكرين يطلع



6 3 2 1

بس شلون حسبها هالبرنامج والله ما ني عارف شيء :(
ترى شوي وابجي <_< لأن بعد 4 ساعات عندي mid term


ال++ أو --
عندما نضعها في الخلف لا أرى أي مشكلة
ولكن حين نضعها في الأمام تدور بي الدوائر.. ولا أعرف راسي وين حاطه

خذ مثلاً هذا المثال:
 

int x, y=3, z=5;int a=3;x = 21 $ z; z+= 4;int w=y++;int b= --acout<< x << " " << y << " " << z << "\n" << w << " " << a << " " << b << endl;

النتيجة تطلع كذا
 

1 4 93 2 2

لكن شلون؟؟
يعني x معروفة لأن باقي القسمة = 1
بس y = 3 ليش تطلع أربعة :(

وال z بعد سهلة لأن مجموعة بأربعة بتطلع 9
أما ام w شلون صارت 2 مو المفروض اتزيد بواحد عساس اتكون 4 لأنها تساوي y++ يعني 3+1

:(
أنتظر ردودكم
الله يحفظكم

تم تعديل بواسطه مصطفى 36a2
add some tags
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

يجب ان تفهم ان التعابير الرياضية في السي بلص بلص تقوم دائما بإعطاء قيمة, و ربما القيام بعملية ما.

y = x++;

يقوم بإسناد القيمة الناتجة من التعبير ++x الى y,

التعبير ++x يقوم بإرجاع قيمة x و يقوم بعملية إضافة 1 الى قيمة x (بعد ان يرجع قيمة x)

التعبير

++x

من الناحية الأخرى, يقوم بإعطاء القيمة (x+1) و يقوم بعملية اضافة 1 الى x

فإذا,

y = x++;

هي مثل:

y = x;
x = x + 1;

اما الجملة

y = ++x;

فهي مثل:

y = x + 1;
x = x + 1;

اذا اردت تحليل تعابير معقدة مثل

k/= m * x++ - ++ y

فعليك معرفة الـ operator precedence, يعني اي من هذه التعبيرات سيتم تنفيذها أولا؟

إذا سألتني بصراحة, فأنا لست متأكدا من النتجة من تلك الجملة, يجب على القيام ببعض المراجعة عن هذه التفاصيل.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
فإذا,

y = x++;

هي مثل:

y = x;
x = x + 1;

اما الجملة

y = ++x;

فهي مثل:

y = x + 1;
x = x + 1;

أها .. :) لذلك قامت w في المثال بأخذ نتيجة الy من دون إضافة

في حين أضيف واحد للy

وكذلك بالنسبة للمثال في المتغيرين b و a

:lol: طلعت سهلة

الله يعطيك العافية ما اتقصر

اذا اردت تحليل تعابير معقدة مثل

k/= m * x++ - ++ y

فعليك معرفة الـ operator precedence, يعني اي من هذه التعبيرات سيتم تنفيذها أولا؟

إذا سألتني بصراحة, فأنا لست متأكدا من النتجة من تلك الجملة, يجب على القيام ببعض المراجعة عن هذه التفاصيل.

اي هذه إلي خايف منها :(

النتيجة صحيحة، أنا مطلعنها بالبرنامج، بس ما أدري التعقيد شلون انفكه

دعائكم لي بالتوفيق في الامتحان

الله يحفظكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .