C++:strchr() 上的指针分配警告

标签 c++ pointers compiler-warnings

我在以下代码中收到错误assignment makes pointer from integer without a cast,这是什么意思?

char * splitter;
if(splitter = strchr(key, ':') != NULL && *(splitter + 1) == ' ')

最佳答案

是因为操作的优先级。您需要放置一组额外的括号以确保它以正确的顺序发生:

char * splitter;
if((splitter = strchr(key, ':')) != NULL && *(splitter + 1) == ' ')

否则它将评估为:

splitter = (strchr(key, ':') != NULL)

由于 strchr(key, ':') != NULL 将评估为 10,在您的示例中,您正在将整数分配给指针类型,因此会出现警告。

但是,我会像您的第二个示例一样编写它,因为它更简单且不易出错。将其缩短一行除了增加复杂性外不会增加任何内容。

关于C++:strchr() 上的指针分配警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646966/

相关文章:

c++ - 没有候选错误编译错误

c - 为库函数定义编译器警告/错误

c++ - 使用索引输入值时 cout 字符串无输出

c++ - 如何制作board1 [{1,1}] ='X';大学工作

c++ - 动态分配的数组和堆损坏

c - C语言中的指针的解释(也可以操纵数组)

xcode - 在 Xcode 3.1.4 中添加 -Wall 和 -Wextra 的位置

c++ - iPhone TCP-IP 字节顺序映射?

c++ - Qt - 检测 QWindow 何时关闭

c++如何获取指向另一个类中当前对象的指针?