我在以下代码中收到错误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
将评估为 1
或 0
,在您的示例中,您正在将整数分配给指针类型,因此会出现警告。
但是,我会像您的第二个示例一样编写它,因为它更简单且不易出错。将其缩短一行除了增加复杂性外不会增加任何内容。
关于C++:strchr() 上的指针分配警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646966/