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