происходит переполнение, как это устранить?

#include <iostream>
using namespace std;
int main() {
    int a1, a100;
    float d, s;
    setlocale(LC_ALL, "RUS");
    cout << "Введите числа: ";
    cin >> a1 >> a100;
    d = (a100 - a1) / 99.0;
    s = (2 * a1 + 15 * d) * 8.0;
    cout << "Разность прогрессии: "<< d << endl;
    cout << "Сумма первых 16 членов прогрессии: " << s;
    return 0;
}

C26451 Арифметическое переполнение: использование оператора "-" на байтовом значении 4 и приведение результата к байтовому значению 8. Приведите значение к более широкому типу перед вызовом оператора "-", чтобы избежать переполнения (io.2).


Ответы (1 шт):

Автор решения: Harry

Чисто теоретически значение

(a100 - a1) / 99.0;

имеет тип double, который может не поместиться в вашей переменной d типа float.

Чем вам так дорог именно float? Замените его на используемый по умолчанию double и не мучайтесь...

→ Ссылка