共用方式為


C6240

警告 C6240: (<運算式> && <非零常數>) 永遠評估為 <運算式> 的結果。 您打算使用位元 AND 運算子嗎?

這個警告表示在測試內容中產生之邏輯 AND 運算的右邊偵測到非零的常數值 (一除外)。 例如,運算式 (n && 3) 會減少為 (!!n) (這是布林值 n)。

這個警告通常是表示嘗試檢查應在其中使用位元 AND (&) 運算子的位元遮罩。 如果非零常數是因為用來選擇性地選擇程式碼路徑而評估為 1,則不會產生這個警告。

範例

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

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE) 
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

若要更正這個警告,請使用位元 AND 運算子,如下列程式碼所示:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmak false");
   }
}

請參閱

參考

& 運算子 (C# 參考)