建議使用 Visual Studio 2017

C6316

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

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

這項警告表示誤用位元 OR ( | ),應該使用位元 AND (&)。 位元 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  
  }  
}  

顯示: