请问大家为什么这个部分一直显示ISO C++ 不允许比较指针和整数的值 ,网上的解决方法都搜过了,但好像不太管用_(:з」∠)_
你 sex的定义是 char 数组吧
strcmp(em[i].sex, "1") == 0
如果是 C++ sex定义可以为 std::string
就可以直接比
sex == "1"
问题解答:
问题出现的背景和原因:
错误提示ISO C++不允许比较指针和整数值通常是因为在代码中将指针和整数值进行了比较,但这两者并不是同一类型的数据。指针是地址,而整数值是数值。指针代表了一个地址,而整数值代表了一个数值,因此它们并不能进行简单的比较。解决该问题的方法一般可以采用强制类型转换或者bool类型转换等方法来进行调整。
解决方案:
针对该问题,可以采用以下几种方法进行解决:
可以将指针转换为整数类型,再进行比较。但需要注意的是,这种方法存在风险,因为不同编译器可能会将指针和整数类型的大小定义得不一样。
int a;
char* p = &a;
if (p == (char*)2) {
cout << "p is equal to 2" << endl;
}
可以将指针转换为bool类型,再进行比较。bool类型只有两个取值,因此比较起来更加方便。这种方法可以避免强制类型转换带来的风险。
void* p = nullptr;
if (p) {
cout << "p is not null" << endl;
}
如果只是想判断两个指针是否相等,可以通过比较它们之间的差值是否为0来实现。
char* p1 = nullptr;
char* p2 = nullptr;
if (p1 - p2 == 0) {
cout << "p1 is equal to p2" << endl;
}
综上所述,以上三种方法都可以解决ISO C++不允许比较指针和整数值的错误。具体采用哪种方法,可以根据实际情况来决定。
参考资料:
参考资料中提供了一个C/C++定时器的例程,可以通过定时器来定时采集数据,避免线程使用的复杂性,更加容易调试。根据实际情况,可以考虑采用定时器的方法来解决问题。