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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de