2013-09-07 9 views

Antwort

11

Sie erhalten sicherlich eine Warnung, weil Sie nicht 1 als solche (int*) 1 haben, so dass Sie eine Gleichheit zwischen verschiedenen Dingen testen: eine Adresse und ein Int.

So ist es entweder if(matchObsFlag == (int*)1) oder if(*matchObsFlag == 1) je nachdem, was Sie tun möchten.

+1

Beachten Sie jedoch, dass das Testen auf 'matchObsFlag == (int *) 1' wahrscheinlich ein Fehler ist, da es testet, ob der Zeiger auf die Adresse' 0x00000001' im Speicher zeigt. –

8
int *matchObsFlag=0; 

Die Art der matchObsFlagint* ist, während die konstanten Literal vom Typ int. Der Vergleich zwischen den nicht verwandten Typen verursacht die Warnung.

matchObsFlag ist ein Nullzeiger. matchObsFlag muss auf einen gültigen Speicherort zeigen, wenn Sie den Wert, auf den der Zeiger zeigt, vergleichen möchten.

int number = 1; 
matchObsFlag = &number; 

Jetzt, um den Wert zu vergleichen, müssen Sie den Zeiger dereferenzieren. Also versuchen Sie -

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

Großartig - danke. – RGriffiths

Verwandte Themen