共用方式為


C6299

警告 C6299: 明確比較位元欄位和布林型別,將產生未預期的結果

這則警告表示假設布林型別會與位元欄位相同是不正確的假設。將 1 指派給位元欄位會在其單位元中放入 1,但是,此位元欄位與 1 的任何比較都會位元欄位到單位元的隱含轉型。此一轉型會將儲存的 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...
  }
}