Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az összehasonlító operátor nagyobb elsőbbséget élvez, mint a bitenkénti operátor.
Először az összehasonlító operátor lesz kiértékelve. Az eredmény implicit módon egy egész számra lesz vetve, és operandusként lesz felhasználva a bitenkénti műveletben. Zárójelek szükségesek a várt műveleti sorrend kényszerítéséhez.
Az lnt-comparison-bitwise-precedence
ellenőrzést a C/C++ kódstílus beállításaiban található Összehasonlítás/Bitenkénti sorrend beállítás vezérli. A beállítás módosításáról további információt a linter konfigurálása című témakörben talál.
Példák
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.
}
Zárójelek használatával kényszerítse ki a műveletek helyes sorrendjét:
bool is_flag_set(unsigned value, unsigned flag)
{
return (value & flag) == flag; // Correct
}
A probléma megoldása
A linter által javasolt javítás az, hogy zárójeleket ad hozzá a bitenkénti művelethez, hogy a rendszer először kiértékelje.