بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
القاعدة_01: الاسبقية precedence
لذلك من المهم معرفة و فهم اسبقية تنفيذ البروسيسور للعمليات الحسابية و المنطقية و غيرها .
كل العمليات فى اى لغة لها اسبقية , اي اذا وجد اكثر من عملية في نفس الامر (السطر) ايهما ينفذ اولا , مثال :
كود:
3+2*5 = ? // MULTIPLY precedes addition so result = 3+10 = 13
4*5 + 3*8 = ? // two * appear and they equal in precedence
// so processor start from left to right
// so first is 1) 20 + 3*8 , 2) 20 + 24 , 3) 44
لذلك من المهم معرفة و فهم اسبقية تنفيذ البروسيسور للعمليات الحسابية و المنطقية و غيرها .
بالنسبة للغة السي فان جدول الاسبقية كالتالى :
http://www.difranco.net/compsci/C_Op...ence_Table.htm
يفضل قراءته و فهمه جيدا .
الخدعة_01 : ستجد انه فى اعلى قمة الاسبقية فى الجدول هو الاقواس الهلالية ( ) , اذن يمكنك ان تخدع البروسيسور
و تجعله يقوم باسبقية تريدها انت و لا ينظر لاسبقيته هو و ذلك بان تجعل كل ما تريده داخل الاقواس , مثال :
كود:
(3+2) * 5 =? // first adding (3+2)=5 then multiply >>> 5*5 = 25
4* (5+8) *8 = ? // first adding (5+8) =13 then multiply >>>> 4*(13)*8 = 52*8=416
ملاحظة مهمة :
زيادة استخدام الاقواس لتجزئة و توضيح الكود هذه الاقواس لا تزيد حجم البرنامج ولا تزيد زمن تنفيذ البرنامج على البروسيسور ,
كما نتصور احبانا . لكن ممكن ان يؤدى الى التباس فى فهم البرنامج ... مثال :
كود:
If (kp&&kp||4&&kp!=12) {}
Can be read as :
كود:
If ( (kp&&kp) || (4&&kp)!=12) ) {}
Or as :
كود:
If ( kp && (kp||4) && (kp!=12) ) {}
و بالطبع النتائج مختلفة , لذلك عليك عند كتابة مثل هذه الاكواد ان تراجع جدول الاسبقية او ان تريح نفسك و تستخدم الاقواس كما تريد .
و الله الموفق و المستعان
اللهم انا نعوذ بك من فتن الدنيا ظاهرها و باطنها و من فتن القبر