在 C 编程中退出 while(1) 循环

Exiting while(1) loop in C programming

我正在为我的 C 编程做示例 class。其中一个例子是:

更新:return 0;break;

之间的区别
#include<stdio.h>
int main()
{

while(1)
{
  printf("Enter number: ");
  scanf("%d", &num);

  if (num==2)
   {
      return 0;
   }
  else
   {
      printf("Num = %d", num);
   }

return 0;
}

我知道while(1)是一个无限循环。 为了摆脱循环,我通常使用 break;

但是,在这个例子中,当 num=2 它退出循环。

我不明白 return o; 如何影响 while(1) 循环?

return 0;

退出您所在的函数,return 值为 0。所以,如果它离开函数,它显然离开了函数中的 while 循环。

return 立即退出函数——不管程序在做什么。

如果你在main函数中执行while(1)循环,return会立即退出main函数,这意味着它会退出程序并退出无限循环也是如此。

如果你在其他函数中执行循环,比如说fooreturn仍然会立即退出foo函数,这仍然意味着它会退出无限循环。

return 终止函数,return 控制调用函数(如果有)。 这就是它打破任何循环、条件或其他控制结构的原因。

returned 值在这方面并不重要。

为了更好地向您解释,让我们在您的代码中添加几行:

#include<stdio.h>
int main()
{

    while(1)
    {
        printf("Enter number: ");
        scanf("%d", &num);

        if (num==2)
        {
            return 0;
        }
        else
        {
            printf("Num = %d", num);
        }
     }

     printf ("BYE\n");
     return 0;
}

让我们用 break 代替 return 0;:

#include<stdio.h>
int main()
{

    while(1)
    {
        printf("Enter number: ");
        scanf("%d", &num);

        if (num==2)
        {
            break;
        }
        else
        {
            printf("Num = %d", num);
        }
     }

     printf ("BYE\n");
     return 0;
}

第一个代码的输出不会包含消息 "BYE",而第二个代码会。

所以总结 return 终止函数并且不执行它下面的任何东西,其中 break 终止循环并且程序不执行循环中的剩余行。