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

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

مغلق
بدأه العُبد في 15 نوفمبر 2005 · 2 رد · 1,146 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

int x= 5, y=2, k=5, m=1;

k/= m * x++ - ++ y
cout << 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= --a

cout<< 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 في 10 أبريل 2014 في 19:32 — السبب: add some tags

#2

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

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, يعني اي من هذه التعبيرات سيتم تنفيذها أولا؟

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

#3
hasan_aljudy كتب:
فإذا,

y = x++;

هي مثل:

y = x;
x = x + 1;

اما الجملة

y = ++x;

فهي مثل:

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

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

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

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

:lol: طلعت سهلة

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

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

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

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

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

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

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

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

الله يحفظكم

هذا الموضوع مغلق.

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