Gimir
@Gimir
JavaScript dev

Код написанный на C компилируется но выдает ошибку в процессе работы?

Код написанный на C выдает ошибку когда я ввожу число в терминал
Вот сам код:
#include <stdio.h>
#include <cs50.h>
int main(void) 
{
    int monets=0;
    int tf = 25;
    int t = 10;
    int f = 5;
    int o = 1;
    printf("O hai! How much change is owed?\n");
    float changeFloat = get_float();
    while (changeFloat<0) 
    {
        printf("O hai! How much change is owed?\n");
        changeFloat = get_float();
    }
    int change = changeFloat*100;
    
    while (tf<=change) {
        monets++;
    }
    while (t<=change) {
        monets++;
    }
    while (f<=change) {
        monets++;
    }
    while (o<=change) {
        monets++;
    }
    printf("%i\n", monets);
    
}

В терминале выдает это:

greedy.c:23:15: runtime error: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int'

Сколько бы я не искал но не нахожу ошибку в самом коде (я полный новичок в C ), скажите пожалуйста в чем тут дело?
  • Вопрос задан
  • 462 просмотра
Решения вопроса 2
@khrisanfov
Программист
У вас все while выполняются вечно, вы tf, t, f, o не меняете, поэтому значение monets выходит за переделы допустимого типа signed integer (2147483647).
Ответ написан
Комментировать
profesor08
@profesor08
Ну, учи что такое while
Узнай что такое if
Учи что такое переполнение
Узнай что такое infinite loop

Далее, опираясь на полученные знания, удали этот код и напиши новый. Так как тут у тебя 4 бесконечных цикла, которые ложат твою программу. И вообще, непонятно зачем они нужны.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы