我很困惑为什么会收到此警告:
我用以下方式启动 matchObsFlag:
int *matchObsFlag=0;
但是当我运行这一行时:
if (matchObsFlag == 1)
我收到这个警告。有任何想法吗?
我很困惑为什么会收到此警告:
我用以下方式启动 matchObsFlag:
int *matchObsFlag=0;
但是当我运行这一行时:
if (matchObsFlag == 1)
我收到这个警告。有任何想法吗?
您肯定会收到警告,因为您没有像这样强制转换 1,(int*) 1
因此您测试了不同事物之间的相等性:地址和 int。
所以它要么是要么if(matchObsFlag == (int*)1)
取决于 if(*matchObsFlag == 1)
你想要做什么。
int *matchObsFlag=0;
的类型matchObsFlag
是int*
,而常量字面量的类型是int
。不相关类型之间的比较导致警告。
matchObsFlag
是一个空指针。matchObsFlag
如果要比较指针指向的值,则需要指向一个有效的内存位置。
int number = 1;
matchObsFlag = &number;
现在,要比较值,您需要取消引用指针。所以试试——
if (*matchObsFlag == 1)
{
// ...
}