Подтвердить что ты не робот

Исключение с плавающей запятой С++ Почему и что это такое?

Я создаю программу для проектов Eyler, вопрос 3, и хотя это может не иметь особого значения, я в настоящее время пытаюсь сделать этот код занятым числом и протестировать, если он простой или нет. Теперь, прежде чем я попытаюсь устранить эту функцию, он дает мне ошибку "исключение с плавающей запятой" сразу после ввода номера. Здесь код:

int main()
{
    int input;
    cout << "Enter number: " << endl;
    cin>> input;
    int i = input/2;
    int c;
    for (i>0; i--;) {
        c= input%i;
        if (c==0 || i == 1)
            cout << "not prime" << endl;
        else
            cout << "prime" << endl;
    }
    return 0;
}

так по сути, почему он дает мне исключение с плавающей запятой и что это значит?

4b9b3361

Ответ 1

A " число с плавающей запятой" - это то, как компьютеры обычно представляют числа, которые не являются целыми числами - в основном число с десятичной точкой. В С++ вы объявляете их с float вместо int. Исключение с плавающей запятой - это ошибка, возникающая, когда вы пытаетесь сделать что-то невозможное с числом с плавающей запятой, например, делить на ноль.

Ответ 2

for (i>0; i--;)

вероятно, неверен и должен быть

for (; i>0; i--)

вместо этого. Обратите внимание, где я помещал точки с запятой. Условие находится в середине, но не в начале.

Ответ 3

Множество причин исключения с плавающей запятой. Глядя на ваш код, ваш цикл for кажется немного "неправильным". Похоже на возможное деление на ноль.

for (i>0; i--;){
c= input%i;

Thats деление на ноль в какой-то момент, так как вы уменьшаете i.