Aracılığıyla paylaş


C6299

uyarı C6299: Boolean türünü açıkça bir bit alanıyla karşılaştırmak, beklenmeyen sonuçlar verir

Bu uyarı, Booleler ve bit alanlarının eşdeğer olduğu gibi yanlış bir varsayım gösterir.Bit alanlarına 1 atama, tek bir bit içinde 1 yer edinilmesini sağlar; ancak, bu bit alanının 1 içeren bit alanı dönüşümü karşılaştırması üstü kapalı bir işaretli tamsayı için bit alanı içerir.Bu yayını saklı 1 -1 olarak dönüştürmek ve karşılaştırmak beklenmeyen sonuçlara yol açabilir.

Ö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ı düzeltmek için bir bit alanını aşağıdaki kodda gösterildiği gibi kullanın:

void f ()
{
  if(bitType.flag==bitType.done)
  {
    // code...
  }
}