次の方法で共有


警告 C6285

('non-zero constant' ||'non-zero constant') は常に 0 以外の定数です。 ビットごとの and 演算子を使用するつもりでしたか?

この警告は、テキスト コンテキストで行われる論理 or 演算の引数として、両方とも 1 より大きい 2 つの定数値が検出されたことを示しています。 この式は常に TRUE です。

解説

1 より大きい定数値は、論理 or の引数がビット フィールドである可能性があることを示しています。 このケースではビットごとの演算子がより適切な演算子である可能性があるかどうかを検討してください。

コード分析名: LOGICALOROFCONSTANTS

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

#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 ...
  }
}

この警告を解決するには、次のコードを使用します。

#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 ...
  }
}

関連項目

二項演算子を含む式