C:使用for(;;)有什么好处吗?

时间:2013-04-10 09:23:46

标签: c

我找到了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实现第一个是有原因的。但任何看法背后的原因是什么?

1 个答案:

答案 0 :(得分:6)

是的,当您将警告级别提高到最大值时,Visual Studio不喜欢while(1)(特别是如果您要求将警告视为错误),但for(;;)可以正常。 / p>