次の方法で共有


警告 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...
  }
}

関連項目

論理 OR 演算子: ||