Bagikan melalui


lnt-comparison-bitwise-precedence

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.

Lihat juga

Linter kode IntelliSense untuk gambaran umum C++