Тернарный оператор имеет тип возвращаемого значения, который определяется перед вычислением значения. Таким образом, если оператор может вернуть как float, так и int, то оба значения преобразуются в float. Ваш ответ приводится следующим образом:
(int)9 -> (int)9 -> (float)9.
Другая ситуация: если вы добавите float и int, вы получите float
int a = 2;
float b = 4.3f;
float c = a + b;