السلام عليكم ورحمة الله وبركاته
عندما تظهر لك مشكلة برمجية عجيبة .. وتحجز لك دماغك لمدة ليست بالقصيرة .. فأسوأ ما يمكن أن يحدث هي أن تختفي لوحدها !!
نعم .. إن أسوأ المشاكل هي التي تظهر فجأة وتختفي فجأة ... واعلم أن عدم قدرتك على توليد نفس الخطأ Bug فهذا يعني أنه لا بد سيظهر عالجلا أم آجلا وسيسبب لك مشاكل في أوقات حرجة من المشروع ..
لنبدأ ..
أثناء أحد البرامج .. بدأت دالة printf تظهر نتائج غريبة ... إليك الأسطر التالية :
for(int j=1;j*powers<m;j++) { int k=j*powers; nums[k]=nums[j]; printf("%i\n",k); printf("%i %i\n",powers,k); }عند الطباعة في الاستدعاء الأول تتم طباعة k بشكل طبيعي .. ولكن في الاستدعاء الثاني يطبع صفراً !!! ولكن عند تغيير ترتيب الوسطاء تتم طباعة k بشكل طبيعي !!
القاعدة الأولى في البرمجة : الحاسوب لا يخطئ .. أنت الذي تُخطئ ...
وطبعاً كانت المشكلة عويصة لمدة عشر دقائق .. قبل أن يتمكن أحدهم من إعادة توليد المشكلة في الكود التالي :
long long x=7; int y=5; printf("%i %i\n",x,y);حاول تغيير ترتيب الوسطاء وتعجّب قليلا :)
فهل عرفت ما هي المشكلة :)
بالتوفيق