Каковы результаты работы программы ниже? - PullRequest
0 голосов
/ 31 мая 2018

При запуске этой проблемы, когда он завершает цикл?

#include<stdio.h>
#include<conio.h>
void main()
{
  int n=12,res=1;
  clrscr();
  while(n>3)
  {
    n+=3;
    res*=3;
  }
  printf("%d",n*res);
  getch();
}

Выше приведен результат 3595. Но я не понимаю процесс цикла while.Когда он завершает свой цикл?

1 Ответ

0 голосов
/ 31 мая 2018

Поведение вашего кода undefined , так как вы в конечном итоге переполните signed целочисленный тип.

Таким образом, вывод может быть любым.

(В вашем случае кажется, что n оборачивается вокруг в отрицательное число, поэтому условное выражение n > 3 больше не true. Но не не полагаются на это поведение: некоторые архитектуры будут, например, зажимать n.)

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