我有这样的功能:
char * s;
{
char * i = s, * t;
for(t = s;*t != NULL;t++)
if (*t == '/') i = t+1;
return i;
}
我得到的警告是指针和整数之间的比较。你怎么解决它?
最佳答案
不要把NULL
当成一个字符,它应该是一个指针类型的常量。
你的循环头应该是:
for(t = s; *t != '\0'; ++t)
这是“过于明确”的写法,一些追求最大简洁性的 C 程序员只会说:
for(t = s; *t; ++t)
因为与 '\0'
的比较与与 0 的比较相同,这在计算表达式时是隐含的。但是,我认为 != '\0'
有助于阅读,因为它清楚地说明了正在发生的事情,我们正在寻找字符串终止符 '\0'
。任何理智的编译器都应该对这种比较进行微不足道的优化。
关于c++ - 警告 : comparison between pointer and integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212097/