共用方式為


C6316

更新:2007 年 11 月

警告 C6316: 不正確的運算子: 測試的運算式為常數且非零。請使用位元 AND 判斷位元是否已設定

這個警告表示在應使用位元 AND (&) 時卻使用位元 OR (|)。位元 OR 會將位元加入至結果運算式中,而位元 AND 只會選取它的兩個運算子間常見的那些位元。旗標的測試必須與位元 AND 或相等測試搭配執行。

範例

下列程式碼將產生出這個警告:

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

若要更正這則警告,請使用下列程式碼:

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}