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

Edu*_*rra 1 c

我找到了这个实现char * strchr (const char *string, int c);:

for (;;) 
  if (*string == c)
    return (char *) string;
  else if (*string == '\0')
    return NULL;
  else
    string++;
Run Code Online (Sandbox Code Playgroud)

但对我来说,这相当于执行以下操作,这将更容易阅读:

while (*string != c && *string != '\0')
  string++;

return (*string == c) ? ((char *) string) : (NULL);
Run Code Online (Sandbox Code Playgroud)

我认为libc有一些原因可以实现第一个.但任何看法背后的原因是什么?

Ale*_*nze 6

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

  • +1.有关信息,Visual Studio警告是"条件表达式是常量",也适用于`while(true)` (3认同)