Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
('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");
}
}