指针和整数之间的比较('int *'和'int')

时间:2013-09-07 12:54:49

标签: objective-c

我很困惑为什么会收到这个警告:

我发起matchObsFlag:

int *matchObsFlag=0;

但是当我跑这条线时:

    if (matchObsFlag == 1)

我收到了这个警告。有什么想法吗?

2 个答案:

答案 0 :(得分:13)

您肯定会收到警告,因为您没有将{1}转换为(int*) 1,因此您测试了不同事物之间的相等性:地址和int。

所以它取决于你想做的事情if(matchObsFlag == (int*)1)if(*matchObsFlag == 1)

答案 1 :(得分:9)

int *matchObsFlag=0;

matchObsFlag的类型为int*,而常量字面值为int类型。不相关类型之间的比较导致警告。

matchObsFlag是一个NULL指针。如果您希望比较指针指向的值,matchObsFlag需要指向有效的内存位置。

int number = 1;
matchObsFlag = &number;

现在,要比较该值,您需要取消引用指针。所以试试 -

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