C6236

تحذير C6236: (<تعبير> | | < ثابت غير صفري >) هو دوماً ثابت غير صفري

هذا التحذير يشير إلى أن القيمة ثابتة غير صفري، غير ذلك من واحد، تم كشفه تشغيل الجانب الأيسر من منطقي-أو العمليات التي تحدث في سياق اختبار. الجانب الأيسر من المنطقي-أو عملية هو لا تقييم لأنه يتم تقييم التعبير الناتج دائماً إلى صواب. Th هو هو الإشارة إلى كما "قصير-circuit تقييم".

القيمة ثابتة غير واحد يقترح التي المختصة بالبت-و عامل التشغيل ( &) ربما intended. Th هو تحذير هو غير التي تم إنشاؤها ل idiom عام عند الثابت صفراً هو 1، نظراً للاستخدام الخاص به لتمكين مسارات تعليمات برمجية، ولكن بشكل انتقائي هو المنشأة إذا تم تقييم الثابت صفراً إلى 1، على سبيل المثال 1 + 0.

مثال

في التعليمة البرمجية التالية، n + + هو لا تقييم لأن INPUT_TYPEهو أكبر من 1:

#define INPUT_TYPE 2
#include <stdio.h>

void f( int n )
{
   // side effect: n not incremented
   if( n++ || INPUT_TYPE ) //warning 6236 issued
   {
      puts( "Always gets here" );
   }
   else
   {
      puts( "Never enters here" );
   }
}

تستخدم التعليمة البرمجية التالية bitwise-و ( &) operaإلىr إلى تصحيح هذا التحذير:

#define INPUT_TYPE 2
#include <stdio.h>

void f( int n )
{
   if( n++ & INPUT_TYPE )
   {
      puts( "Bitwise-AND comparison is true" );
   }
   else
   {
      puts( "Bitwise-AND comparison is false" );
   }
}

راجع أيضًا:

موارد أخرى

تمثل عوامل تشغيل C + +