我找到了char * strchr (const char *string, int c);
的实现:
for (;;)
if (*string == c)
return (char *) string;
else if (*string == '\0')
return NULL;
else
string++;
但对我而言,这相当于执行以下操作,这将更容易阅读:
while (*string != c && *string != '\0')
string++;
return (*string == c) ? ((char *) string) : (NULL);
我认为libc实现第一个是有原因的。但任何看法背后的原因是什么?
答案 0 :(得分:6)
是的,当您将警告级别提高到最大值时,Visual Studio不喜欢while(1)
(特别是如果您要求将警告视为错误),但for(;;)
可以正常。 / p>