Advertencia C6286

('constante no cero' || 'expression') siempre es una constante distinta de cero. 'expression' nunca se evalúa y puede tener efectos secundarios

Comentarios

Esta advertencia indica que se ha detectado una constante distinta de cero en el lado izquierdo de una operación OR lógica que se produce en un contexto de prueba. La expresión resultante siempre se evalúa como TRUE. Además, el lado derecho de la expresión parece tener efectos secundarios y se perderán.

Es posible que desee examinar cuidadosamente el lado derecho de la expresión para asegurarse de que no se pierdan los efectos secundarios necesarios para la funcionalidad adecuada.

La construcción (!0 || <expression>) se usa normalmente para forzar la ejecución de un bloque controlado.

Nombre del análisis de código: NONZEROLOGICALORLOSINGSIDEEFFECTS

Ejemplo

El código siguiente genera esta advertencia:

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

En el código siguiente se muestra una posible solución al dividir la instrucción if en dos partes independientes:

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

Consulte también

Operador lógico OR: ||