次の方法で共有


C6239

警告 C6239: (<0 でない定数> && <式>) は、常に <式> の結果に評価されます。 ビットごとの and 演算子を使用するつもりでしたか?

この警告は、テスト コンテキストに出現する論理 AND 演算の左側で 1 以外の 0 ではない定数値が検出されたことを示します。 たとえば、式 ( 2 && n ) は (!!n) になります。これはブール値 n です。

この警告は、通常、ビットごとの AND (&) 演算子を使用する必要のあるビット マスクのチェックの試行を示します。0 以外の定数が 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# リファレンス)