בקטע הקוד הבא ישנה שגיאה. באיזה שלב תתגלה השגיאה?
for (int i = 1; i < 7; i++)
{
cout << i << endl;
i = i + 1;
}
- זוהי שגיאת קומפילציה. השגיאה תתגלה בזמן קומפילציה.
- אין שגיאה בקטע הקוד
- זוהי שגיאה לוגית. השגיאה תתגלה בזמן ריצה
- זוהי שגיאה לוגית. השגיאה תתגלה בזמן קומפילציה.
כיצד ניתן למנוע מראש שגיאה זו?
- ע"י הקפדה על העיקרון שלא משנים מונה לולאה בתוך הלולאה
- ע"י קביעת i כ-const
- ע"י הגדרת משתנה i מחוץ ללולאה
אסף החליט לוודא שהמונה שלו אינו חורג מהלולאה ושתל בתוכה את הפקודה הבאה:
for (int i = 10; i > 0; i--)
{
....
Assert (i>0);
...
}
- שיטה זו טובה רק אם נרוץ ב-Release
- שיטה זו טובה רק אם לא נשנה את i בתוך הלולאה
- זוהי פקודה מיותרת. ממראה עיניים ברור ש- i>0.
- שיטה מצוינת ושימוש נכון ב-Assert