الأربعاء، 16 سبتمبر 2015

من غرائب الماكرو

السلام عليكم  

أريد مشاركة اخوتي هنا بأمر كنت أريد أن اضعه على شكل لغز برمجي

لكن لم أجد المجتمع يرحب بالألغاز البرمجية ...

نبدا على بركة الله ساقدم شفرة برمجية .. وارجوا من القارئ أن يخمن بالمخرجات ..

نصيحة لا تتسرع ....

define mi(p) (p*p)

int main() { int j=5;

printf(" i = %d\n",mi(j+0));

return 0;

}

أظن أن الأغلبية ظنت أن المخرجات هي 25 !!!!!!

لكن ماكرو رفض طباعة تخمين الأغلبية وطبع لنا 5 ؟؟؟

يمكنك أن تجرب الكود وترى بأم عينك نتيجة ... 

ارجوا من اخوة قبل متابعة قراءة 

جلوس قليل وتخمين في المخرجات

....

....

....

....

....

أخي هل عصرت مخك جيدا .... أظنك اكتشفت الحل ..

....

....

....

....

سنقوم بشرح الشفرة .... 

الماكرويستقبل وسيط واحد ونحن قمنا بتمرير وسيطين ..

ماكرو سيغلف الوسيطين على انه وسيط واحد يعني (j+0)

لتصبح عملية بهذا شكل j+0*j+0 وبهذا تصبح النتيجة " مخرجات " == j  يعني 5

اظن أنه لم يبقى اي ابهام على تلك شفرة ...

أرجوا من الاخوة الان مساعدتي ممن ذهب عليهم حل للغز

لو أريد طباعة تخمين الاغلبية يعني 25 ماذا على أن اضيف ...

ملاحظة قلت أضيف ولم أقل أغير ... والفرق شاااسع ...

الى موضوع آخر ان شاء الله ..

ســلام عليكم ..



from حسوب I/O - الأكثر شيوعاً http://ift.tt/1KpmUcc

ليست هناك تعليقات:

إرسال تعليق

دائماً، رأيكم يهمنا،