Прежде всего, да, система будет приводить переменные, чтобы она могла выполнять вычисления в общем базовом типе. Во-вторых, это не то, о чем вам следует больше всего беспокоиться, если вы не протестировали свою программу и не знаете, что это ваше узкое место.
Просто, чтобы уточнить первую часть, хотя, если у вас есть
double a = 10.0;
int b = 5;
int c = 2;
и ваша формула
double d = a + (b / c);
большинство систем, о которых я знаю, будут использовать целочисленную математику, где они могут, для операции деления в этом случае, а затем переключаться на математику с плавающей запятой, где это необходимо. Короче говоря, решение между целым числом и математикой с плавающей точкой принимается на уровне оператора.