الزيادة والنقصان اللاحقة
جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 19 من 74.
في الدرس السابق، تناولنا عاملي الزيادة (++) والنقصان (--). لهذه العوامل شكلان: بادئة (prefix) و لاحقة (postfix).
تُكتب الصيغة البادئة (prefix) قبل المتغير (على سبيل المثال، ++x أو --x)، وتُكتب الصيغة اللاحقة (postfix) بعد المتغير (على سبيل المثال، x++ أو x--).
إن معرفة أي صيغة يجب استخدامها أمر مهم في الممارسة العملية. على سبيل المثال، في إحدى الألعاب قد تتبع نتيجة اللاعب باستخدام score++ بعد كل إصابة، أو تستخدم --lives لتعكس فوراً فقدان حياة قبل التحقق مما إذا كانت اللعبة قد انتهت. في الحلقات التكرارية، يمكن أن يؤثر الاختيار بين البادئة (prefix) واللاحقة (postfix) على القيمة المستخدمة في التعبير قبل التحديث أو بعده.
الفرق بين الصيغتين طفيف ولكنه مهم:
- صيغة البادئة (Prefix form): تقوم بزيادة/إنقاص قيمة المتغير ثم تُرجع القيمة الجديدة.
- صيغة اللاحقة (Postfix form): تُرجع القيمة الحالية للمتغير ثم تقوم بزيادته/إنقاصه.
إليك مثال لتوضيح الفرق:
int x = 5;
int y = x++;
// y = 5, x = 6 (اللاحقة: تأخذ y القيمة الأصلية، ثم يتم زيادة x)
int a = 5;
int b = ++a;
// b = 6, a = 6 (البادئة: يتم زيادة a أولاً، ثم تأخذ b القيمة الجديدة)في الحالة الأولى، يتم تعيين القيمة الأصلية لـ x (5) إلى y، ومن ثم تتم زيادة x إلى 6. في الحالة الثانية، تتم زيادة a أولاً، ثم يتم تعيين قيمته الجديدة (6) لـ b.
ينطبق نفس المنطق على عامل الإنقاص:
int x = 5;
int y = x--;
// y = 5, x = 4 (postfix: تأخذ y القيمة الأصلية، ثم يتم إنقاص x)
int a = 5;
int b = --a;
// b = 4, a = 4 (prefix: يتم إنقاص a أولاً، ثم تأخذ b القيمة الجديدة)التحدي
مبتدئلقد تم تزويدك بكود يحتوي على تهيئة للمتغيرات x، و y، و z. (لا تحذف هذه الأسطر!)
مهمتك هي استخدام معاملات الزيادة والنقصان (increment/decrement operators) لإجراء العمليات التالية، بهذا الترتيب:
- استخدم معامل الزيادة اللاحق (postfix increment operator) لتخصيص القيمة الحالية لـ
xإلىaثم زيادةx. - استخدم معامل النقصان السابق (prefix decrement operator) لإنقاص
yوتخصيص قيمتها الجديدة لـb. - استخدم معامل النقصان اللاحق (postfix decrement operator) لتخصيص القيمة الحالية لـ
zإلىcثم إنقاصz.
بعد إجراء هذه العمليات، قم بطباعة قيم a، و b، و c، و x، و y، و z إلى وحدة التحكم (console) بالتنسيق التالي:
a: [value of a]
b: [value of b]
c: [value of c]
x: [value of x]
y: [value of y]
z: [value of z]جرّب بنفسك
#include <iostream>
int main() {
int x = 10;
int y = 20;
int z = 30;
int a, b, c;
// اكتب الكود الخاص بك أدناه
// لا تقم بتغيير الأسطر الموجودة بالأسفل
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
std::cout << "c: " << c << std::endl;
std::cout << "x: " << x << std::endl;
std::cout << "y: " << y << std::endl;
std::cout << "z: " << z << std::endl;
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص