不兼容的整数到指针转换错误?

时间:2013-04-21 02:55:09

标签: c pointers

出于某种原因,我在这一行收到错误:

while ((en = strtok(NULL, " " ) !=NULL)){ //do something }

并且在这一行(这一行的错误是'指针与整数之间的比较('int'和'void *'),即使inputString是一个char数组且null为null。

while (!inputString[i]==NULL)

en是一个char,并被声明为char * en。我不确定为什么......是因为我无法将它们与NULL进行比较?

1 个答案:

答案 0 :(得分:13)

问题不在于比较 - 这是作业。 !=的优先级高于=,因此您的表达式被解析为:

en = (strtok(NULL, "") != NULL)

大概en是指针类型,!=的结果是int,因此警告就出现了。你可能意味着:

(en = strtok(NULL, "")) != NULL

作为条件。在第二个示例中也是如此 - !的优先级高于==,因此您要将!inputString[i](其类型为int)的结果与{NULL进行比较1}}(可能有类型void *)。你可能意味着:

while (!(inputString[i] == NULL))

也可以写成:

while (inputString[i] != NULL)

或只是

while (inputString[i])