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");
}
}