تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Postfix Prefix Increment and Decrement
#1
بسم الله ارحمن الرحيم



*هذا الدرس موجه بالاخص للمبتدئين.


اللاحق والسابق (Postfix and Prefix): تأتي مع الـ Unary Operators وهما (++ and --) أي الزيادة او النقصان بمقدار (1) حيث الـ Postfix تعني اللاحق والـ Prefix تعني السابق.

اللاحق (Postfix): بمعنى أن الـ Unary Operator (-- ,++) تأتي بعد المتغير، سواء في جملة او عملية معينة او لوحدها مع المتغير، حيث سيتم اسناد القيمة الى المتغير ومن ثم زيادة قيمة المتغير.

السابق (Prefix): بمعنى أن الـ Unary Operator (-- ,++) تسبق المتغير، سواء في جملة او عملية معينة كأن تكون معادلة او لوحدها مع المتغير، حيث سيتم زيادة قيمة المتغير ومن ثم اسنادها الى المتغير.

عندما تأتي مع المتغير لوحدها فتأثيرها واحد سواء سبق المتغير او لحقها، بمعنى أن المتغير سيزداد او يقل بمقدار (1) في كل الاحوال.


مثال:
PHP كود :
private static void Main(string[] args)
        {
            var x = 1;
            var y = 1;
            x++; // postfix
            ++y; // prefix
            
            Console
.WriteLine(x); // will print 2
            Console.WriteLine(y); // also will print 2
 
            Console.ReadLine();
        

وايضا داخل for-loop حيث لا تأثير للـ Postfix and Prefix.

هذا الامر يختلف حينما يأتي المتغير داخل دالة الطباعة على سبيل المثال:
PHP كود :
private static void Main(string[] args)
       {
           var x = 1;
           var y = 1;
 
           Console.WriteLine(x++); // postfix inside: will print 1 then  increment x by 1
           Console.WriteLine(++y); // prefix inside: increment y by 1 and will print 2
 
           Console.ReadLine();
       

لاحظ أنه ناتج الطباعة اختلف لان في هذه الحالة تأتي شيئ اسمه (الاولوية).


مثال آخر لكن هذه المرة سنستخدم الـ Unary Operators في معادلة بسيطة ونرى النتائج:

PHP كود :
var x = 1;
            var y = 1;
 
            
            var result 
= x++ + +++ x;
            Console.WriteLine(result); // will print 5
 
            Console.ReadLine(); 

لماذا الناتج: 5؟

الجواب انه في الرياضيات تبدأ الحساب من اليسار الى اليمين في البداية ستبقى قيمة x=1 ومن ثم يزداد بمقدار 1 ثم تأتي عملية الجمع حيث y=2 لانه prefix ومن ثم عملية الجمع مع x=2 لانه x ازداد بمقدار 1، فالناتج = 5.

طيب ماذا لو قمنا بتغيير المعادلة بهذا الشكل حيث نعمل على زيادة اخر x بمقدار واحد:

PHP كود :
var result x++ + ++x++; 

هل بامكانك تخيل الناتج معي؟ انه ايضا 5

لان العملية على آخر x هي Postfix واذا قمنا بطباعة x ستكون الناتج 3.



المثال على Github:


تحياتي لكم
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم