警告 C6286
('non-zero constant' ||'expression') は常に 0 以外の定数です。 'expression' は評価されないので、副作用が発生する可能性があります
解説
この警告は、テスト コンテキストで発生する論理 OR 演算の左辺で、0 でない定数が検出されたことを示します。 結果の式は常に TRUE と評価されます。 さらに、式の右側には副作用があり、失われます。
適切な機能に必要な副作用が失われないように、式の右側を慎重に調べることをお勧めします。
(!0 || <expression>)
の構築は、通常、制御されたブロックの実行を強制するために使用されます。
コード分析名: NONZEROLOGICALORLOSINGSIDEEFFECTS
例
この警告が発生するコード例を次に示します。
#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...
}
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示