Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir bit alanını açıkça Boole türüyle karşılaştırmak beklenmeyen sonuçlar verir
Açıklamalar
Bu uyarı, Boolean ve bit alanlarının eşdeğer olduğu varsayımının yanlış olduğunu gösterir. Bit alanlarına 1 atanacak, 1'i tek bitine yerleştirir; ancak, bu bit alanının 1 ile karşılaştırılması, bit alanının imzalı bir int ile örtük bir dökümü içerir. Bu atama, depolanan 1'i -1'e dönüştürür ve karşılaştırma beklenmeyen sonuçlar verebilir.
Kod analizi adı: BITFIELD_TO_BOOL_COMPARISON
Örnek
Aşağıdaki kod bu uyarıyı oluşturur:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Bu uyarıyı düzeltmek için aşağıdaki kodda gösterildiği gibi bir bit alanı kullanın:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}