2013-09-07 73 views

Trả lời

11

Bạn chắc chắn sẽ nhận được cảnh báo vì bạn không truyền 1 như vậy (int*) 1 để bạn kiểm tra sự bình đẳng giữa các thứ khác nhau: địa chỉ và int.

Vì vậy, hoặc là if(matchObsFlag == (int*)1) hoặc if(*matchObsFlag == 1) tùy thuộc vào những gì bạn muốn làm.

+1

Lưu ý rằng việc kiểm tra 'matchObsFlag == (int *) 1' có thể là một sai lầm, vì nó sẽ kiểm tra nếu con trỏ trỏ đến địa chỉ' 0x00000001' trong bộ nhớ. –

8
int *matchObsFlag=0; 

Loại matchObsFlagint* trong khi đen liên tục là loại int. So sánh giữa các loại không liên quan đang gây ra cảnh báo.

matchObsFlag là con trỏ NULL. matchObsFlag cần trỏ đến vị trí bộ nhớ hợp lệ nếu bạn muốn so sánh giá trị được trỏ bởi con trỏ.

int number = 1; 
matchObsFlag = &number; 

Bây giờ, để so sánh giá trị, bạn cần phải dereference con trỏ. Vì vậy, hãy thử -

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

Tuyệt vời - cảm ơn bạn. – RGriffiths

Các vấn đề liên quan