Rumah >pembangunan bahagian belakang >C++ >Adakah Terdapat Cara Lebih Pantas untuk Memeriksa sama ada Integer Jatuh Dalam Julat Tertentu?
Cara Terpantas untuk Menentukan sama ada Integer Adalah Antara Dua Integer (Inklusif)
Menentukan sama ada integer terletak di antara dua integer lain adalah perkara biasa operasi, dan pendekatan tradisional melibatkan penggunaan logik DAN dan ketaksamaan perbandingan:
x >= start && x <= end
Walau bagaimanapun, adakah terdapat alternatif yang lebih pantas?
Satu potensi pengoptimuman ialah menggunakan satu perbandingan/cawangan. Pendekatan ini berfungsi dengan menukar nombor dan sempadan bawah dan atas kepada integer tidak bertanda dan membandingkan perbezaannya:
if ((unsigned)(number-lower) <= (upper-lower)) in_range(number);
Mengapa ini berfungsi? Jika nombor di bawah sempadan bawah, perbezaannya akan menjadi negatif. Jika nombor berada dalam julat, perbezaannya akan menjadi positif dan kurang daripada atau sama dengan perbezaan antara sempadan atas dan bawah.
Kaedah ini mempunyai beberapa kelebihan:
Dalam amalan, menterjemah nombor dan selang ke titik asal dan menguji jika nombor itu terletak dalam [0, D], di mana D = atas - bawah, menyediakan asas untuk algoritma yang cekap ini. Nombor negatif di bawah sempadan bawah diterjemahkan kepada nilai negatif, manakala nombor di atas sempadan atas diterjemahkan kepada nilai yang lebih besar daripada D.
Atas ialah kandungan terperinci Adakah Terdapat Cara Lebih Pantas untuk Memeriksa sama ada Integer Jatuh Dalam Julat Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!