Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
('costante non zero' || 'costante non zero') è sempre una costante non zero. Si intende usare l'operatore bit per bit e ?
Osservazioni:
Questo avviso indica che due valori costanti, entrambi maggiori di uno, sono stati rilevati come argomenti per un'operazione o logica che si verifica in un contesto di test. Questa espressione è sempre TRUE.
I valori costanti maggiori di uno suggeriscono che gli argomenti per i campi logici o possono essere di bit. Valutare se in un caso come questo potrebbe essere più appropriato un operatore bit per bit.
Nome dell'analisi del codice: LOGICALOROFCONSTANTS
Esempio
Il codice seguente genera questo avviso:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f()
{
if (TESTED_VALUE || MASK)
{
puts("(TESTED_VALUE || MASK) True");
// code ...
}
else
{
puts("(TESTED_VALUE || MASK) False");
// code ...
}
}
Per correggere questo avviso, usare il codice seguente:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f(int flag)
{
if ((TESTED_VALUE & MASK)== flag)
{
puts("true");
// code ...
}
else
{
puts("false");
// code ...
}
}