【发布时间】:2010-02-16 09:35:32
【问题描述】:
鉴于这个循环,为什么末尾有一个分号?
for(s = string; *s == ' '; s++)
;
谢谢
edit * 那么是否可以反转此过程,使其从字符串末尾开始并检查空格并减少直到找到字符?
【问题讨论】:
-
将其更改为使用 ++s -- 它有可能生成更好的代码。
-
为什么这会让代码变得更好?在这个例子中也是一样的。
-
如果您的编译器具有正确的优化(大多数都这样做,因此使用“潜在”一词),就会出现这种情况。除非需要后增量,否则最好使用前增量——优化通常不适用于非内置类型。
-
回答您的编辑,是的,有可能:
size_t len = strlen(string); char *s; for (s=string+len; *s == ' '; --s) ;