Avviso C6286
('costante non zero' || 'expression') è sempre una costante non zero. 'expression' non viene mai valutato e può avere effetti collaterali
Osservazioni:
Questo avviso indica che è stata rilevata una costante non zero sul lato sinistro di un'operazione o logica che si verifica in un contesto di test. L'espressione risultante restituisce sempre TRUE. Inoltre, il lato destro dell'espressione sembra avere effetti collaterali e andranno persi.
È possibile esaminare attentamente il lato destro dell'espressione per assicurarsi che gli effetti collaterali necessari per una corretta funzionalità non vengano persi.
La (!0 || <expression>)
costruzione viene comunemente utilizzata per forzare l'esecuzione di un blocco controllato.
Nome dell'analisi del codice: NONZEROLOGICALORLOSINGSIDEEFFECTS
Esempio
Il codice seguente genera questo avviso:
#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...
}
}
Il codice seguente mostra una possibile soluzione suddividendo if
l'istruzione in due parti separate:
#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...
}
}
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per