Uyarı C6239

('sıfır olmayan sabit' &&'ifade') her zaman 'ifade' sonucuna göre değerlendirilir. Bit düzeyinde ve işlecini kullanmayı amaçladınız mı?

Açıklamalar

Bu uyarı, bir test bağlamında gerçekleşen mantıksal AND işleminin sol tarafında sıfır olmayan bir sabit değerin algılandığını gösterir. Örneğin, ifadesi ( 2 && n ) boole değeri olan değerine küçültülür(!!n)n.

Bu uyarı genellikle bit düzeyinde AND (&) işlecinin kullanılması gereken bir bit maskesini denetleme girişimini gösterir ve sıfır olmayan sabit, kod yollarını seçmeli olarak seçmek için kullanıldığından 1 olarak değerlendirilirse oluşturulmaz.

Kod analizi adı: NONZEROLOGICALAND

Örnek

Aşağıdaki kod bu uyarıyı oluşturur:

#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
   if(INPUT_TYPE && n) // warning C6239
   {
      puts("boolean value of n is true");
   }
   else
   {
      puts("boolean value of n is false");
   }
}

Bu uyarıyı düzeltmek için aşağıdaki kodda gösterildiği gibi bitwise-AND (&) işlecini kullanın:

#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
   if( ( INPUT_TYPE & n ) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

Ayrıca bkz.

& İşleci