Поскольку выражения C, включая подвыражения, обычно оцениваются без учета контекста, в котором они появляются, подвыражение a*b/c
будет оцениваться с использованием целочисленной арифметики, что означает усеченное деление.
Если вы хотитевыполнять арифметику с плавающей точкой на целочисленных значениях, вам необходимо преобразовать их в тип с плавающей точкой.Это должно работать в вашем случае:
long long int a;
long long int b;
long long int c;
/* Assign values to a, b, and c (!) */
double d = (double)a * b / c;
Обратите внимание, что преобразования только первого операнда достаточно, чтобы умножение и деление выполнялись в типе double
.