次の方法で共有


C6299

警告 C6299: ビット フィールドとブール型を明示的に比較すると、予期しない結果を生成します

この警告は、ブール値とビット フィールドが同じものであるという誤った想定があることを示します。 ビット フィールドに 1 を割り当てると、1 つのビットに 1 が入力されます。しかし、このビット フィールドを 1 と比較すると、ビット フィールドが暗黙的に符号付き int にキャストされます。 このキャストにより、格納されている 1 は -1 に変換されるため、比較すると予期しない結果が生じる可能性があります。

使用例

この警告が発生するコード例を次に示します。

struct myBits
{
  short flag : 1;
  short done : 1;
  //other members
} bitType;

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

この警告を解決するには、次のコードに示すようにビット フィールドを使用します。

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