ইন্টিজার ওভারফ্লো সনাক্ত করার একমাত্র নিরাপদ উপায়: ওভারফ্লো হওয়ার আগেই চেক করা।
আনসাইনড ইন্টিজার অ্যাডিশনে ওভারফ্লো চেক
unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // অথবা value < y
লজিক: যদি দুটি আনসাইনড ইন্টিজার যোগ করলে ওভারফ্লো হয়, তবে রেজাল্ট যেকোনো একটি অপারেন্ড থেকে ছোট হবে (র্যাপ-অরাউন্ডের কারণে)।
অন্যান্য পদ্ধতি (স্ট্যান্ডার্ড নয়)
- CPU-এর ওভারফ্লো ফ্ল্যাগ এক্সেস করা (কিছু কম্পাইলার সাপোর্ট করে, যেমন GCC-র
__builtin_add_overflow) - সাইনড ইন্টিজারের জন্য:
if (a > 0 && b > INT_MAX - a)ওভারফ্লো
সুপারিশ: C++20-এ <numbers> হেডার এবং std::add_sat (স্যাচুরেটিং অ্যাড) ইত্যাদি আসছে। বর্তমানে __builtin_*_overflow (GCC/Clang) সবচেয়ে ভালো।