Выход из цикла while (1) в программировании на C - PullRequest
0 голосов
/ 27 апреля 2018

Я делаю примеры для моего C класса программирования. И один из примеров такой:

Обновление: разница между 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)?

Ответы [ 4 ]

0 голосов
/ 28 апреля 2018

Чтобы лучше объяснить вам, давайте добавим несколько строк в ваш код:

#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 завершает цикл, а программа не выполняет оставшиеся строки в цикле.

0 голосов
/ 27 апреля 2018

return немедленно выходит из функции - независимо от того, какую программу работы выполнял.

Если вы выполняете цикл while(1) в функции main, return немедленно выйдет из функции main, что означает, что она выйдет из программы и также выйдет из бесконечного цикла.

Если вы выполняете цикл в другой функции, скажем, foo, return все равно немедленно выйдет из функции foo, что по-прежнему означает, что она выйдет из бесконечного цикла.

0 голосов
/ 27 апреля 2018

return завершает функцию и возвращает управление вызывающей функции (если есть). Вот почему он выходит из любой петли, условной или другой управляющей конструкции.

Возвращаемое значение не имеет значения в этом отношении.

0 голосов
/ 27 апреля 2018
return 0;

выходит из функции, в которой вы находитесь, с возвращаемым значением 0. Таким образом, если он покидает функцию, он, очевидно, выходит из цикла while, который находится в функции.

...