我有一个功能:
char * s;
{
char * i = s, * t;
for(t = s;*t != NULL;t++)
if (*t == '/') i = t+1;
return i;
}
Run Code Online (Sandbox Code Playgroud)
我得到的警告是指针和整数之间的比较.你怎么解决它?
停止NULL作为一个字符处理,它应该是一个指针类型常量.
你的循环标题应该是:
for(t = s; *t != '\0'; ++t)
Run Code Online (Sandbox Code Playgroud)
这是编写它的"过于明确"的方式,一些旨在获得最大简洁性的C程序员只会说:
for(t = s; *t; ++t)
Run Code Online (Sandbox Code Playgroud)
由于'\0'比较与0的比较相同,这只是在评估表达式时隐含的.但是,我认为!= '\0'阅读的帮助因为它清楚地说明了发生了什么,我们正在寻找字符串终结符'\0'.任何理智的编译器都应该对这种比较进行简单的优化.
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |