次の方法で共有


C6285

警告 C6285: (<0 でない定数> || <0 でない定数>) は常に 0 でない定数です。 ビットごとの and 演算子を使用するつもりでしたか?

この警告は、テスト コンテキストで発生する論理 OR 操作に対する引数に、1 より大きい定数値が 2 つ検出されたことを示します。 この式は常に TRUE になります。

定数値が 1 よりも大きいことから、論理 OR に対する引数がビット フィールドである可能性が考えられます。 この場合には、ビットごとの演算子である & の方が適切である可能性を検討してください。

使用例

この警告が発生するコード例を次に示します。

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f()
{
  if (TESTED_VALUE || MASK) 
  {
    puts("(TESTED_VALUE || MASK) True");
    // code...
  }
  else 
  {
    puts("(TESTED_VALUE || MASK) False");
    // code...
  }
}

この警告を修正するには、次のコードに示すようにビットごとの AND (&) 演算子を使用します。

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f(int flag)
{
  if ((TESTED_VALUE & MASK)== flag)
  {
    puts("true");
    // code...
  }
  else
  {
    puts("false");
    // code...
  }
}

参照

参照

Bitwise AND Operator: &

Logical OR Operator: ||