پرش به محتوا

سرریز عدد صحیح

از ویکی‌پدیا، دانشنامهٔ آزاد
مثالی از سرریز عدد صحیح از نوع مکانیکی در کیلومترشمار. تمام عددها روی ۹ هستند که بیشتری عدد است. با افزودن عدد یک به این عدد همهٔ عددها یکی پیش می‌روند، پس نتیجه صفر است.

در برنامه‌نویسی، سرریز عدد صحیح هنگامی رخ می‌دهد که نتیجهٔ یک عمل محاسباتی مقدار عددی بزرگی است که از محدودهٔ مجاز قابل پردازش فراتر است. مثلاً افزودن عدد ۱ به بزرگ‌ترین عدد قابل نمایش سبب این نوع سرریز می‌شود، و معمول‌ترین نتیجه‌ای که سیستم بروز می‌دهد کوچک‌ترین عدد قابل نمایش است (در انگلیسی به این رخداد اصطلاحاً wraparound می‌گویند). در برخی پردازشگرها مثل واحد پردازشگر گرافیکی و پردازشگر سیگنال دیجیتال نتیجه به اشباع رسانده می‌شود، یعنی وقتی به بزرگترین عدد برسیم، نتیجهٔ تلاش برای بزرگتر کردن آن، برگردانده شدن همان بزرگترین عدد قابل نمایش است. طبق استاندارد ایزو سی۹۹ سرریز عدد صحیح سبب «رفتار تعریف‌نشده» می‌شود، این یعنی کامپایلرها می‌توانند کاملاً آن را نادیده بگیرند یا حتی برنامه را متوقف کنند. اغلب کامپایلرها از این مشکل چشم‌پوشی می‌کنند، و نتیجه‌ای غیرمنتظره یا غلط برمی‌گردانند. سرریز عدد صحیح می‌تواند در حالاتی به سرریز بافر منجر شود.

منابع

[ویرایش]