خرج البرنامج و السبب

السّلام عليكم,

أرجو منكم مساعدتي في ايجاد خرج هذا الكود و تفسيره:

int i;
int vals[5];
for (i = 0; i <= 5; i++) {
    vals[i] = 0; }
printf("%d\n", i);
return 0;
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

ملاحظات :

  • اولا مخارج Otuput وليس خرج.

  • ثانيا الكود يجب ان ينفذ حتى تتعرف على مخارجه.

  • ثالثا لديك خطأ : المصفوفة vals تاخذ خمس قيم فقط وانت في حلقة التكرار for تجبرها على اخذ ستة قيم وهذا خطأ.

  • البرنامج ليس له مخارج لأنه خاطئ

التفسير:

  • سطر واحد : البرنامج يعرف متغير من نوع رقم صحيح باسم i لاستخدامه للعد في حلقة التكرار

  • سطر اثنين : البرنامج يعرف مصفوفة من رقم صحيح وتستوعب ٥ قيم على الاكثر

  • سطر ثلاثة : البرنامج يبدأ حلقة تكرار تبدأ من الرقم صفر وتنتهي بالرقم ٥ (٦ ارقام)

  • سطر اربعة : داخل حلقة التكرار يتم اسناد قيمة العنصر في المصفوفة الموافق لرقم العد في حلقة التكرار واعطاءه قيمة صفر. وبما ان حلقة التكرار تتكرر ستة مرات فهذا يعني انه سيتم اسناد ٦ قيم الى المصفوفة حتى العنصر vals[5] وهذا خطأ لان اخر عنصر بالمصفوفة هو ٤.

  • السطر خمسة : يتم طباعة رقم العد الاخير لحلقة التكرار مع انزال السطر

  • السطر الاخير : نهاية البرنامج.

شكرا أخي، أعلم مسبقا أنه خاطئ بسبب محاولة الوصول إلى عنصر خارج المصفوفة، ولكن وضعت المنشور للتأكد ، شكرا على هذا الشرح الرائع .... لماذا خرج خاطئة؟

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

سؤال آخر: أهو (i) يعمل كمؤشّر؟