Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menetapkan Semua Bit Integer Tidak Ditandatangani kepada Benar?
Memastikan Bit Ditetapkan kepada Benar: Meneroka Pilihan
Apabila memulakan integer yang tidak ditandatangani untuk menetapkan semua bitnya kepada benar, pembangun sering menghadapi dilema. Adakah lebih baik menggunakan -1, 0xffffffff, atau ~0?
-1: Penyelesaian Lurus
Menetapkan pembolehubah kepada -1 dianggap kaedah paling langsung . Ia memberikan nilai tertinggi yang mungkin untuk integer yang tidak ditandatangani, dengan berkesan menetapkan semua bit kepada benar. Pendekatan ini bebas daripada perwakilan tanda dan berfungsi secara konsisten.
0xffffffff dan ~0: Potensi Kejutan
Menggunakan 0xffffffff atau ~0 boleh membawa kepada tingkah laku yang tidak dijangka. ~0 menyongsangkan semua bit pembolehubah, menghasilkan -1 yang dikehendaki hanya apabila pembolehubah itu daripada jenis int tidak bertanda. Untuk jenis lain, ia mungkin tidak menghasilkan nilai yang dijangkakan. Sebagai contoh, ~0u diperlukan untuk menetapkan semua bit panjang yang tidak ditandatangani kepada benar.
Selain itu, ~0 pada mesin pelengkap bukan dua tidak akan menghasilkan -1. Ini boleh mengakibatkan permulaan pembolehubah kepada sifar dan bukannya nilai tertinggi yang dikehendaki.
Kesimpulan
Apabila matlamatnya adalah untuk menetapkan semua bit integer yang tidak ditandatangani kepada benar, kaedah yang paling boleh dipercayai adalah untuk menetapkan -1. Pendekatan ini mudah alih dan berfungsi untuk semua jenis pembolehubah dan perwakilan mesin.
Mengelakkan Salah Tanggapan
Adalah penting untuk menjelaskan bahawa tafsiran benar/salah mengelirukan. -1 tidak semestinya mempunyai semua bit ditetapkan kepada satu, dan ~0 sentiasa menetapkan semua bit kepada satu. Sebaliknya, tumpuan harus diberikan pada nilai yang ditetapkan: -1 secara berkesan memulakan pembolehubah kepada nilai tertinggi yang mungkin tidak ditandatangani.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Semua Bit Integer Tidak Ditandatangani kepada Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!