共用方式為


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

請參閱

參考

& 運算子 (C# 參考)