Satu-satunya cara selamat adalah dengan memeriksa sebelum limpahan berlaku. Terdapat beberapa cara tidak rasmi untuk menyemak limpahan integer walaupun. Jadi, jika matlamat anda adalah untuk mengesan limpahan apabila menambah integer yang tidak ditandatangani, anda boleh menyemak sama ada hasilnya sebenarnya lebih kecil daripada dua nilai tambah. Contohnya ,
unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // Alternatively "value < y" should also work
Ini kerana jika x dan y kedua-duanya adalah integer tidak bertanda, nilainya tidak boleh lebih besar daripada mana-mana jika ia ditambah dan melimpah, kerana ia perlu lebih besar daripada yang mungkin terbesar. Integer yang tidak ditandatangani diperlukan untuk memintas dan melebihi nilai ini.
Pendekatan lain ialah cuba mengakses bendera limpahan dalam CPU. Sesetengah penyusun menyediakan akses kepadanya dan anda boleh mengujinya, tetapi ini bukan standard.
Atas ialah kandungan terperinci Bagaimana untuk mengesan limpahan integer dalam C/C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!