Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator perbandingan memiliki prioritas yang lebih tinggi dibandingkan operator bitwise.
Operator perbandingan akan dievaluasi terlebih dahulu. Hasilnya akan secara implisit ditransmisikan menjadi bilangan bulat dan digunakan sebagai operand dalam operasi bitwise. Tanda kurung diperlukan untuk membuat urutan operasi yang diharapkan.
Pemeriksaan lnt-comparison-bitwise-precedence
dikontrol oleh pengaturan Perbandingan/Prioritas Bitwise pada opsi Gaya Pengodean C/C++. Untuk informasi cara mengubah pengaturan ini, lihat Mengonfigurasikan linter.
Contoh
bool is_flag_set(unsigned value, unsigned flag)
{
return value & flag == flag; // Flagged: `flag == flag` is evaluated first.
// Then `value & (int)true` is evaluated which
// returns an incorrect result in most cases.
}
Gunakan tanda kurung untuk memaksa urutan operasi yang benar:
bool is_flag_set(unsigned value, unsigned flag)
{
return (value & flag) == flag; // Correct
}
Cara menyelesaikan masalah
Perbaikan yang disarankan linter yaitu menambahkan tanda kurung di sekitar operasi bitwise sehingga operasi akan dievaluasi terlebih dahulu.