C6316
警告 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
}
}