C6286
警告 C6286: (<0 でない定数> || <式>) は常に 0 でない定数です。 <式> は評価されることがないため、副作用が発生する可能性があります
この警告は、テスト コンテキストに出現する論理 OR 演算の左側で 0 以外の定数が検出されたことを示します。 結果の式は常に TRUE に評価されます。 さらに、式の右側には副作用があるように見えますが、これらの副作用は失われます。
この警告は、式の右側を注意深く調べて、適切な動作に必要な副作用が失われていないことを確認する必要があることを示しています。
(!0 || <expression>) 構築は、通常は、制御ブロックの実行を強制するために使用されます。
使用例
この警告が発生するコード例を次に示します。
#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1
int test();
void f()
{
if (INPUT_TYPE || test())
{
puts("INPUT_TYPE == 1, expression not evaluated");
// code...
}
else
{
puts("INPUT_TYPE == 0. Call to test() returned 0");
// code...
}
}
次のコードは、if ステートメントを 2 つに分割するという、1 つの解決法を示しています。
#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1
int test();
void f()
{
int i;
if (INPUT_TYPE)
{
i = test();
// code...
}
else
{
puts("INPUT_TYPE false");
// code...
}
}