Sdílet prostřednictvím


C6239

upozornění C6239: (< nulová konstantní > & & <expression>) 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 levé straně logické- A operace v rámci testu.Například výraz ( 2 && n ) na (!!n), což je logická hodnota n.

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

Příklad

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

#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
   if(INPUT_TYPE && n) // warning 6239
   {
      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( ( INPUT_TYPE & n ) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

Viz také

Referenční dokumentace

& Operátor (C#-Reference)