Warnung C6235
('Nicht-Nullkonstante' || 'Ausdruck') ist immer eine Konstante ungleich Null.
Diese Warnung gibt an, dass auf der linken Seite eines logischen Oder Vorgangs, der in einem Testkontext auftritt, ein Nicht-Null-Konstantenwert erkannt wurde. Die rechte Seite des logischen Oder Vorgangs wird nicht ausgewertet, da der resultierende Ausdruck immer als wahr ausgewertet wird. Diese Sprachfunktion wird als "Kurzschlussauswertung" bezeichnet.
Hinweise
Ein nicht null konstanter Wert( außer einem) deutet darauf hin, dass der Bitweise-AND-Operator (&
) möglicherweise beabsichtigt war. Diese Warnung wird für den allgemeinen Idiom nicht generiert, wenn die Nicht-Null-Konstante 1 ist, da sie zum selektiven Aktivieren von Codepfaden verwendet wird. Es wird jedoch generiert, wenn die Nicht-Null-Konstante z 1+0
. B. auf 1 ausgewertet wird.
Codeanalysename: NONZEROLOGICALOR
Beispiel
Der folgende Code generiert diese Warnung, da INPUT_TYPE
2 lautet:
#define INPUT_TYPE 2
void f(int n)
{
if(INPUT_TYPE || n) //warning C6235 issued
{
puts("Always gets here");
}
else
{
puts("Never gets here");
}
}
Der folgende Code verwendet den Bitweise-AND(&
)-Operator, um diese Warnung zu korrigieren:
#define INPUT_TYPE 2
void f(int n)
{
if((INPUT_TYPE & n) == 2)
{
puts("bitwise-AND comparison true");
}
else
{
puts("bitwise-AND comparison false");
}
}