Off by one
![]() | Ten artykuł od 2012-06 wymaga zweryfikowania podanych informacji. Należy podać wiarygodne źródła w formie przypisów bibliograficznych. Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte. Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary) Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu. |
Off by one to błąd programistyczny polegający na pomyłce o jeden, np. zaczynanie od 1 kiedy powinno się od 0 (lub odwrotnie) bądź mylenie „mniejsze” z „mniejsze-równe” w warunkach pętli.
Przykład typowego błędu off by one (pętla wykona się 101 razy, nie 100):
int foo[100]; int i; for (i=0; i<=100; ++i) foo[i] = 0;
Uwaga: W przypadku, gdy kompilator ułoży adresy zmiennych na stosie tak, że:
&i == &foo[100];
- program się zapętli. Błąd ten może być wykorzystany na przykład do zmiany rejestru ESP.