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 ...
}
}
この警告を解決するには、次のコードを使用します。
#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 ...
}
}