C6239
警告 C6239: (<非零常數> && <運算式>) 永遠評估為 <運算式> 的結果。 您打算使用位元 AND 運算子嗎?
這個警告表示在邏輯 AND 運算的左邊偵測到非零常數值 (一以外的值),而這個運算是發生在測試內容中。 例如,運算式 ( 2 && n ) 會減少為 (!!n) (這是布林值 n)。
這個警告一般是表示嘗試檢查應在其中使用位元 AND (&) 運算子的位元遮罩,而且如果非零常數是因為用於選擇性地選擇程式碼路徑,而評估為 1,則不會產生這個警告。
範例
下列程式碼將產生出這個警告:
#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
if(INPUT_TYPE && n) // warning 6239
{
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( ( INPUT_TYPE & n ) )
{
puts("bitmask true");
}
else
{
puts("bitmask false");
}
}