Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบ Integer Overflow ใน C++


วิธีที่ปลอดภัยที่สุดคือตรวจสอบ overflow ก่อนที่จะเกิดขึ้น มีวิธีแฮ็กบางอย่างในการตรวจสอบ integer overflow ดังนั้นหากคุณต้องการตรวจจับ overflow ในการบวก unsigned int สามารถตรวจสอบว่าผลลัพธ์น้อยกว่าค่าที่บวกเข้ามาหรือไม่ เช่น

ตัวอย่าง

unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // หรือ "value < y" ก็ทำงานได้เช่นกัน

เนื่องจากถ้า x และ y เป็น unsigned int ทั้งคู่ ถ้าบวกกันแล้วเกิด overflow ค่าของพวกมันจะไม่สามารถมากกว่าทั้งสองค่าได้ เนื่องจากจะต้องมากกว่าค่า unsigned int สูงสุดจึงจะวนกลับมาและน้อยกว่าค่าเหล่านั้น

อีกวิธีหนึ่งคือลองเข้าถึง Overflow flag ใน CPU บางคอมไพเลอร์ให้เข้าถึงได้ ซึ่งคุณสามารถทดสอบได้ แต่ไม่ใช่มาตรฐาน