مشغل الزيادة والنقص (Increment and decrement operators) هو مشغل برمجي أحادي يقوم بعملية الجمع أو الطرح إلى ومن المعامل الخاص به، وعادة ما يكون مزروع داخل لغات البرمجة الأمرية.[1][2][3] كما تحتوي لغات البرمجة الشبيهة بلغة سي نسختين لكل مشغل (قبل وبعد) باختلاف دلالي بسيط جداً.
في لغات البرمجة المشتقة من الناحية التركيبة من لغة البرمجة بي (بما في ذلك لغة سي ومشتقاتها العديدة)، فإن مشغل الجمع يكتب على شكل ++
بينما مشغل الطرح يكتب على شكل --
.
مشغل الزيادة يضيف قيمة واحد (1) إلى قيمة معامله، والمعامل يجب أن تكون بيناته حسابية أو مؤشرة، وتقود إلي كائن قابل التعديل، وبالمثل فإن مشغل النقص ينقص من قيمة معامله بمقدار واحد (1). تزداد قيم المؤشرات (أو تنقص) بمقدار يجعلها تشير إلى العنصر المجاور التالي (أو السابق) في الذاكرة.
في بعض لغات البرمجة التي تحتوي علي نسختين من كل مشغل (قبل وبعد)، فإن مشغل قبل الزيادة يضيف واحد إلي معامله وبالتالي فإن قيمة التعبير هي قيمة الزيادة، أما في حالة مشغل بعد الزيادة فإن المشغل يضيف واحد إلى معامله وبالتالي فإن قيمة التعبيير هي قيمة المعامل ذاته قبل عملية الإضافة.
بالنظر إلي أن مشغل الزيادة والنقص يعدل من قيمة معامله فإن استخدام هذا المعامل أكثر من مره في نفس التعبير يؤدي إلي نتائج غير معرفة، على سبيل المثال: فإن تعبير مثل x - ++x
هو تعبير غير واضح التتابع من ناحية الجمع أو الطرح، وهذا يؤدي إلي ما يعرف سلوك غير محدد ويجب تجنب أثناء البرمجة.
مثال
المثال التالي يوضح الفرق بين معامل الزيادة ومعامل النقصان في لغة سي.
int x; int y; // معامل الزيادة x = 1; y = ++x; // x أصبحت 2، y أصبحت أيضاً 2 y = x++; // x أصبحت 3، y تساوي 2 // معامل النقصان x = 3; y = x--; // x أصبحت الآن 2، y تساوي 3 y = --x; // x أصبحت 1، y تساوي 1
مراجع
- "GNU Awk's User Guide". Free Software Foundation. مؤرشف من الأصل في 24 ديسمبر 2017.
- "Increment Wolfram Language Symbol". Wolfram Language Documentation Center. مؤرشف من الأصل في 25 ديسمبر 2017.
- "8.3. The Double-Parentheses Construct". The Linux Documentation Project. مؤرشف من الأصل في 07 يونيو 2018.