مشغل الزيادة والنقص
مشغل الزيادة والنقص  هو مشغل برمجي أحادي يقوم بعملية الجمع أو الطرح إلى ومن المعامل الخاص به، وعادة ما يكون مزروع داخل لغات البرمجة الأمرية. كما تحتوي لغات البرمجة الشبيهة بلغة سي نسختين لكل مشغل (قبل وبعد) باختلاف دلالي بسيط جداً.

في لغات البرمجة المشتقة من الناحية التركيبة من لغة البرمجة بي (بما في ذلك لغة سي ومشتقاتها العديدة)، فإن مشغل الجمع يكتب على شكل ++ بينما مشغل الطرح يكتب على شكل --.

مشغل الزيادة يضيف قيمة واحد (1) إلى قيمة معامله، والمعامل يجب أن تكون بيناته حسابية أو مؤشرة، وتقود إلي كائن قابل التعديل، وبالمثل فإن مشغل النقص ينقص من قيمة معامله بمقدار واحد (1). تزداد قيم المؤشرات (أو تنقص) بمقدار يجعلها تشير إلى العنصر المجاور التالي (أو السابق) في الذاكرة.

في بعض لغات البرمجة التي تحتوي علي نسختين من كل مشغل (قبل وبعد)، فإن مشغل قبل الزيادة يضيف واحد إلي معامله وبالتالي فإن قيمة التعبير هي قيمة الزيادة، أما في حالة مشغل بعد الزيادة فإن المشغل يضيف واحد إلى معامله وبالتالي فإن قيمة التعبيير هي قيمة المعامل ذاته قبل عملية الإضافة.

بالنظر إلي أن مشغل الزيادة والنقص يعدل من قيمة معامله فإن استخدام هذا المعامل أكثر من مره في نفس التعبير يؤدي إلي نتائج غير معرفة، على سبيل المثال: فإن تعبير مثل x - ++x هو تعبير غير واضح التتابع من ناحية الجمع أو الطرح، وهذا يؤدي إلي ما يعرف سلوك غير محدد ويجب تجنب أثناء البرمجة.

نتيجة هذا التعبير x - ++x دائماً تساوي الصفر، عند محاولة فهم هذا التعبير نجد أن أولوية تنفيذ مشغل الزيادة أعلى من أولوية تنفيذ عملية الطرح، لذلك سوف يقوم مشغل الزيادة بإضافة واحد لقيمة (x)، وبما أننا نقوم بطرح قيمتين من نفس النوع ولهم نفس المسمى فإن أي تغيير حدث في قيمة (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

مراجع

انظر أيضًا 
 مؤشر (برمجة)
 لغات برمجة

برمجة
مشغلات (برمجة)
مشغل الزيادة والنقص هو مشغل برمجي أحادي يقوم ب عملية الجمع أو الطرح إلى و من المعامل الخاص ب ه ، وعادة ما يكون مزروع داخل لغات البرمجة الأمرية . كما تحتوي لغات البرمجة الشبيهة ب لغة سي نسختين ل كل مشغل ( قبل و بعد ) ب اختلاف دلالي بسيط جداً . في لغات البرمجة المشتقة من الناحية التركيبة من لغة البرمجة بي ( ب ما في ذلك لغة سي ومشتقات ها العديدة ) ، ف إن مشغل الجمع يكتب على شكل + + بينما مشغل الطرح يكتب على شكل - - . مشغل الزيادة يضيف قيمة واحد إلى قيمة معامل ه ، والمعامل يجب أن تكون بينات ه حسابية أو مؤشرة ، و تقود إلي كائن قابل التعديل ، وب المثل ف إن مشغل النقص ينقص من قيمة معامل ه ب مقدار واحد تزداد قيم المؤشرات ( أو تنقص ) ب مقدار يجعل ها تشير إلى العنصر المجاور التالي ( أو السابق ) في الذاكرة . في بعض لغات البرمجة التي تحتوي علي نسختين من كل مشغل ( قبل و بعد ) ، ف إن مشغل قبل الزيادة يضيف واحد إلي معامل ه و ب التالي ف إن قيمة التعبير هي قيمة الزيادة ، أما في حالة مشغل بعد الزيادة ف إن المشغل يضيف واحد إلى معامل ه و ب التالي ف إن قيمة التعبيير هي قيمة المعامل ذات ه قبل عملية ال إضافة . ب النظر إلي أن مشغل الزيادة والنقص يعدل من قيمة معامل ه ف إن استخدام هذا المعامل أكثر من مره في نفس التعبير يؤدي إلي نتائج غير معرفة ، على سبيل المثال : ف إن تعبير مثل x - + + x هو تعبير غير واضح التتابع من ناحية الجمع أو الطرح ، و هٰذا يؤدي إلي ما يعرف سلوك غير محدد و يجب تجنب أثناء البرمجة . نتيجة هذا التعبير x - + + x دائماً تساوي الصفر ، عند محاولة ف هم هذا التعبير نجد أن أولوية تنفيذ مشغل الزيادة أعلى من أولوية تنفيذ عملية الطرح ، ل ذٰلك سوف يقوم مشغل الزيادة ب إضافة واحد لقيمة ( x ) ، و ب ما أن نا نقوم ب طرح قيمتين من نفس النوع و ل هم نفس المسمى ف إن أي تغيير حدث في قيمة ( x ) ب سبب مشغل الزيادة سوف يؤثر على القيمة الأولى التي في هذا التعبير أن لا و هي ( x ) أيضاً ، و لذٰلك هذا التعبير يشبة تماما ك أن نا نقوم ب طرح قيمتين متساويتين ، ل ذٰلك الناتج سوف يكون صفر دائماً . مثال المثال التالي يوضح الفرق بين معامل الزيادة ومعامل النقصان في لغة سي . int x ; int y ; / / معامل الزيادة x = y = + + x ; / / x أصبحت y أصبحت أيضاً 2 y = x + + ; / / x أصبحت y تساوي 2 / / معامل النقصان x = y = x - - ; / / x أصبحت الآن y تساوي 3 y = - - x ; / / x أصبحت y تساوي 1 مراجع انظر أيضًا مؤشر ( برمجة ) لغات برمجة برمجة مشغلات ( برمجة )