Aracılığıyla paylaş


C6236

uyarı C6236: (<ifade> || < sıfır olmayan sabit >) her zaman bir sıfır olmayan sabitidir

Bu uyarı sıfır olmayan bir sabit değerinin, biri dışında, bir test bağlamında oluşan bir mantıksal-veya işleminin sağ tarafında tespit edildiğine işaret eder.Mantıksal-veya işleminin sol tarafı açıklamayı sonuçlandırma her zaman doğruyu hesapladığı için değerlendirilmez.Bu "kısa-devre değerlendirmesi." olarak bilinir.

Biri dışında bir sabit değer, bitsel-ve operatörünün (&) hedeflenebileceğini önerir.Bu uyarı, sıfır olmayan sabit 1 olduğunda seçici kod yollarının için kullanımı sebebiyle ortak bir deyim için oluşturulmaz, ancak eğer sıfır olmayan sabit 1 olarak hesaplanıyor ise, örneğin 1+0, o zaman oluşturulur.

Örnek

Aşağıdaki kodda, n ++ değerlendirilmez çünkü INPUT_TYPE 1'den büyüktür:

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

Aşağıdaki kod bu uyarıyı düzeltmek için bitsel-VE (&)operatörü kullanı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" );
   }
}

Ayrıca bkz.

Diğer Kaynaklar

C++ Bitsel Operatörler