C6240

تحذير C6240: (<تعبير> & & < ثابت غير صفري >) دوماً يقيم إلى نتيجة <تعبير>. هل كنت إلى استخدام المختصة بالبت-و operaإلىr؟

هذا التحذير يشير إلى أنه غير-تم اكتشاف أية القيمة ثابتة، غير موجود، تشغيل الجانب الأيسر من منطقي-و العملية التي تحدث في سياق اختبار. ل مثال، تعبير (n && 3)يقلل إلى(!! n), which is the Boolean value of n.

وهذا تحذير عادة ما يشير إلى محاولة فحص من قناع بت الذي المختصة بالبت-و ( &) يستخدم عامل التشغيل. هو لا إنشاء إذا تم تقييم الثابت صفراً 1 نتيجة استخدامها لاختيار مسارات تعليمات برمجية بشكل انتقائي.

مثال

يلي تعليمات برمجية ينشئ هذا التحذير:

#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");
   }
}

إلى تصحيح هذا التحذير، استخدم bitwise-و operaإلىr كما هو موضح في التعليمة البرمجية التالية:

#include <stdio.h>
#define INPUT_TYPE 2

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

راجع أيضًا:

المرجع

&عامل التشغيل (C# مرجع)