Sdílet prostřednictvím


C6240

upozornění C6240: (<expression> & & < konstantní nenulovou >) vždy vyhodnocen jako výsledek <expression>.Opravdu chcete použít bitové- a operátor?

Toto upozornění znamená, že konstantní hodnotu nula, než jedna, byl nalezen na pravé straně logické- a operace v rámci testu.Například výraz (n && 3) snižuje na (!!n), což je logická hodnota n.

Toto upozornění obvykle označuje pokus o vrácení bitová maska, ve kterém bitového- A (&) provozovatel by měl být použit.Pokud konstantní nenulovou vyhodnocen 1 z důvodu jeho použití pro selektivní volba cesty kódu není vytvořena.

Příklad

Následující kód vygeneruje toto upozornění:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE) 
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

Chcete-li opravit toto upozornění, použijte bitové- A operátor, jak je znázorněno v následujícím kódu:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmak false");
   }
}

Viz také

Referenční dokumentace

& Operátor (C#-Reference)