Если c > 1000
, то выражение (1000/c)
становится нулевым из-за целочисленного деления. Здесь выполняется целочисленное деление, поскольку оба операнда являются целочисленными типами.
В результате выражение (a / b) * (1000 / c)
становится равным нулю, поэтому значение result
становится равным нулю, вызывая утверждение.
То же самое произойдет, если b > a
, по той же причине, что и выше.
Если целочисленное деление не то, что вам нужно, перепишите выражение следующим образом:
long long result = long long((float(a) / b) * (1000.0f / c));
Это вызывает деление с плавающей запятой вместо целочисленного деления. Значения a
и c
будут преобразованы в тип с плавающей точкой для расчета результата.