Нужно детально разобрать, почему цикл бесконечный - C (СИ)
Формулировка задачи:
Вот имеется цикл
Мне нужно понять,почему этот цикл является бесконечным. Я вспомнил,что число double представляется в виде порядка и мантиссы,а в моей ситуации мы к мантиссе прибавляем только положительные числа,то есть знак мантиссы не меняется. Ещё была идея,что из-за погрешности,которая присутствует при увеличении типа double мы никогда не достигнем порогового значения. Но в интернете я наткнулся на формулировку,что в Си выход за границы диапазона не определен,то есть выходит так,что когда число типа double достигло бы границы диапазона с ним бы произошло непонятно что.
Подскажите,как грамотно ответить на данный вопрос? Очень хочется разобраться.
double n=50;
while(n>0)
n+=15;
printf("%lf",n);Решение задачи: «Нужно детально разобрать, почему цикл бесконечный»
textual
Листинг программы
int main()
{
int n = 50;
while (n > 0)
n += 15;
printf("%d\n",n);
}
Объяснение кода листинга программы
В этом коде:
- Объявлена переменная
nсо значением 50. - Запущен цикл
while, который будет выполняться до тех пор, покаnбольше 0. - Внутри цикла
nувеличивается на 15. - После завершения цикла, выводится значение
nс помощью функцииprintf. - Значение
nбудет выводиться до тех пор, покаnбольше 0. - Поскольку в цикле
nувеличивается на 15, то каждый следующий вывод будет больше предыдущего на 15. - Если бы в цикле было условие, которое уменьшало бы
n, то цикл был бы конечным. Но поскольку такого условия нет, то цикл будет выполняться бесконечно.