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

RGr*_*ths 8 objective-c

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

我发起matchObsFlag:

int *matchObsFlag=0;
Run Code Online (Sandbox Code Playgroud)

但是当我运行这一行时:

    if (matchObsFlag == 1)
Run Code Online (Sandbox Code Playgroud)

我收到了这个警告.有任何想法吗?

Lud*_*Zik 13

你肯定得到一个警告,因为你没有这样(int*) 1做,所以你测试不同的东西之间的相等:一个地址和一个int.

所以它要么if(matchObsFlag == (int*)1)if(*matchObsFlag == 1)取决于你想做什么.


Mah*_*esh 9

int *matchObsFlag=0;
Run Code Online (Sandbox Code Playgroud)

类型matchObsFlagint*常量字面值的类型int.不相关类型之间的比较导致警告.

matchObsFlag是一个NULL指针.matchObsFlag如果要比较指针指向的值,则需要指向有效的内存位置.

int number = 1;
matchObsFlag = &number;
Run Code Online (Sandbox Code Playgroud)

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

if (*matchObsFlag == 1)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)