2013-09-07 16 views

risposta

11

Avrai sicuramente un avviso perché non hai lanciato 1 come tale (int*) 1 così testerai un'uguaglianza tra cose diverse: un indirizzo e un int.

Quindi è if(matchObsFlag == (int*)1) o if(*matchObsFlag == 1) a seconda di ciò che si desidera fare.

+1

Si noti tuttavia che il test per 'matchObsFlag == (int *) 1' è probabilmente un errore, in quanto verifichera 'se il puntatore punta alla voce' 0x00000001' in memoria. –

8
int *matchObsFlag=0; 

Il tipo di matchObsFlag è int* mentre letterale costante è di tipo int. Il confronto tra i tipi non correlati sta causando l'avvertimento.

matchObsFlag è un puntatore NULL. matchObsFlag deve puntare a una posizione di memoria valida se si desidera confrontare il valore indicato dal puntatore.

int number = 1; 
matchObsFlag = &number; 

Ora, per confrontare il valore, è necessario dereferenziare il puntatore. Quindi prova -

if (*matchObsFlag == 1) 
{ 
    // ... 
} 
+0

Grande - grazie. – RGriffiths

Problemi correlati