خطای off-by-one

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به ناوبری پرش به جستجو

خطای Off-by-one یک خطای منطقی می‌باشد که مربوط به کرانه اجرای شرط در برنامه نوشته شده (با هر زبان برنامه‌نویسی) می‌باشد. این خطا را به این صورت نیز توصیف می‌کنند:

"that extra inch you didn't really want"

یعنی آن مقدار اضافی که اجرا شده ولی مد نظر تو نبود. برای درک بهتر این خطا حالت زیر را در نظر بگیرید:

برنامه‌نویسی می‌خواهد یک حلقه را بنویسید که ۵ بار اجرا شود. فرض کنید شروع حلقه حالت n و پایان آن m است و برنامه‌نویس چنان فرض می‌کند که میزان شمارش این حلقه به این صورت است: m-n که اگر n را برابر صفر و m را برابر ۴ در نظر بگیریم، طبق فرض برنامه‌نویس این حلقه ۴=۰–۴ بار اجرا می‌شود و حلقه آن به این صورت نوشته شده است:

 for (i=0;i<=4;i++)
}
-----
{


ولی با کمی دقت می‌توان فهمید که این حلقه ۵ بار اجرا می‌شود نه ۴ بار و مشکل محاسبات منطقی برنامه‌نویس بود چون تعداد بار اجرای حلقه به صورت m-n+1 حساب می‌شود. این خطای منطقی که در برنامه رخ داده Off-by-one نامیده می‌شود و در مراحل بعدی برنامه می‌تواند محاسبات را بهم زده و نتیجه برنامه را به کلی تغییر دهد (خروجی خارج از انتظار برنامه‌نویس باشد).

منابع[ویرایش]