2013-09-07 14 views

Odpowiedz

11

Na pewno dostaniesz ostrzeżenie, ponieważ nie oddałeś 1 jako takiego (int*) 1, więc przetestujesz równość między różnymi rzeczami: adresem i int.

Więc jest albo if(matchObsFlag == (int*)1) lub if(*matchObsFlag == 1) w zależności od tego, co chcesz zrobić.

+1

Należy jednak zauważyć, że testowanie 'matchObsFlag == (int *) 1' jest prawdopodobnie błędem, ponieważ sprawdzi, czy wskaźnik wskazuje na adres' 0x00000001' w pamięci. –

8
int *matchObsFlag=0; 

Typ matchObsFlag jest int* gdy stała dosłownym jest typu int. Porównanie między niepowiązanymi typami powoduje ostrzeżenie.

matchObsFlag to wskaźnik NULL. matchObsFlag musi wskazywać prawidłową lokalizację pamięci, jeśli chcesz porównać wartość wskazywaną przez wskaźnik.

int number = 1; 
matchObsFlag = &number; 

Teraz, aby porównać wartość, należy wyłuskać wskaźnik. Więc spróbuj -

+0

Świetnie - dziękuję. – RGriffiths

Powiązane problemy