سأحاول شرح السؤال وطريقة الإجابة قدر المستطاع:
السؤال بالإنغليزي:
Step 1. Assuming that x and y are variables of type integer, what ambiguity exists in the following two statements?
(Hint: If x starts with the value 3, will y in the first statement be assigned 9 or 11?)
|
كود:
y = x + x + x++;
y = x++ + x + x;
السؤال بالعربي:
الخطوة 1: بافتراض أن x و y عبارة عن متغيرين من نوع عدد صحيح (Integer)، ما هو الالتباس الموجود في الجملتين التاليتين؟
(تلميح: إذا كان x يحمل القيمة 3 كقيمة أولية، هل قيمة y في الجملة الأولى سوف تكون 9 أم 11 ؟)
|
كود:
y = x + x + x++;
y = x++ + x + x;
الهدف من السؤال هو التفريق بين ++x و x++. طبعاً كلا الطريقتين ستزيد قيمة المتغير x بمقدار 1 ولكن الفرق هو توقيت زيادة هذا المتغير.
++x (المتغير يليه العلامة ++): وهذه تعني بأن قيمة x ستزيد بمقدار 1
بعد الانتهاء من تنفيذ السطر الحالي.
مثال:
x قيمتها 6، بينما y قيمتها 5
x++ (العلامة ++ تليها المتغير): وهذه تعني بأن قيمة x ستزيد بمقدار 1
قبل البدء بتنفيذ السطر الحالي.
مثال:
x قيمتها 6، بينما y قيمتها 6
=============================
السؤال بالإنغليزي:
Step 2. Write a short program to discover what actually happens when these statements are executed?
Record your program and your findings.
|
السؤال بالعربي:
الخطوة 2: قم بكتابة برنامج صغير لاستكشاف ماذا يجري عند تشغيل السطرين السابقين. قم بتدوين برنامجك ومخرجاته.
|
=============================
السؤال بالإنغليزي:
Step 3. Change the program you wrote in Step 2 to investigate the expressions
|
كود:
x + x + ++x
++x + x + x
x-- + x + x
x + x + x--
السؤال بالعربي:
الخطوة 3: قم بتغيير البرنامج الذي قمت بكتابته في الخطوة 2 للتحقق من الجمل التالية:
|
كود:
x + x + ++x
++x + x + x
x-- + x + x
x + x + x--
أتمنى بأن تكون فكرة السؤال وصلت :)
بالتوفيق ~