C6286

avviso C6286: (<costante diversa da zero> || <espressione>) è sempre una costante diversa da zero.<espressione> non viene mai valutata e può avere effetti collaterali

L'avviso indica che un valore di costante diverso da zero è stato rilevato a sinistra di un'operazione di OR logico in un contesto di test.Il valore dell'espressione risultante è sempre TRUEe poiché l'espressione sul lato destro sembra avere effetti collaterali, questi andranno persi.

L'avviso indica che è possibile esaminare attentamente il lato destro dell'espressione per garantire che gli effetti collaterali necessari per garantire una corretta funzionalità del prodotto non vadano perduti.

La costruzione (!0 || <expression>) è generalmente utilizzata per forzare l'esecuzione di un blocco controllato.

Esempio

Il codice seguente genera questo avviso:

#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1 

int test();

void f()
{
  if (INPUT_TYPE || test()) 
  {
    puts("INPUT_TYPE == 1, expression not evaluated");
    // code...
  }
  else
  {
    puts("INPUT_TYPE == 0. Call to test() returned 0");
    // code...
  }
}

Nel codice seguente è riportata una possibile soluzione, che consiste nel suddividere l'istruzione if in due parti separate:

#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1 

int test();

void f()
{
  int i;
  if (INPUT_TYPE) 
  {
    i = test();
    // code...
  }
  else
  {
    puts("INPUT_TYPE false");
    // code...
  }
}

Vedere anche

Riferimenti

Operatore OR logico: ||