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...
}
}