Программирование на C, это бесконечный цикл? - PullRequest
0 голосов
/ 24 апреля 2019

Что бы произошло, если бы следующие строки были частью скомпилированной программы?

void main() {
    int x = 5;
    while (x == 5); 
}//end main

Я верю, что я его скомпилировал, и экран просто остается прежним, я тоже пытался добавить после оператора while

int y = 10;
printf("%i", y);

и затем конец основного. Однако это никогда не печатает. Так что я совершенно уверен, что это бесконечный цикл, но я просто хотел бы быть уверен.

Ответы [ 4 ]

1 голос
/ 24 апреля 2019

Да, это бесконечный цикл. Помните, что пока условие истинно, цикл while будет продолжен. Поскольку 5 всегда будет равно 5, условие всегда будет истинным, даже если вы ничего не делаете внутри цикла while.

1 голос
/ 24 апреля 2019

Да, это так, но в некоторых случаях это может фактически выйти из цикла:

  • Существует поток, который изменяет переменную x.
  • Внешняя программа изменяет память программы.
  • Как сказал Тадман, в самой памяти происходит битовый флип, что очень маловероятно, но также возможно.

Должны быть другие случаи, когда цикл может закончиться, но это те, о которых я мог подумать.

Если вам интересно, вы можете попробовать сделать это с помощью Cheat Engine, чтобы изменить значение x.

1 голос
/ 24 апреля 2019

Да, это бесконечный цикл, так как условие выхода из цикла никогда не будет выполнено: поскольку переменная x никогда не изменяется внутри цикла, условие цикла всегда будет истинным.

0 голосов
/ 24 апреля 2019

try:

void main() {
    int x = 5;
    while (x == 5){
        printf("%d\n", x);
    } 
}

Использовать формат% d для двойных чисел

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...