次の方法で共有


C6240

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

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

この警告は、通常、ビットごとの AND (&) 演算子が必要なビット マスクを確認しようとしていることを示します。0 以外の定数が 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# リファレンス)