Я думаю, что это проблема точности. Операторы / и * имеют одинаковый приоритет, поэтому 7/9 * 9 оценивается слева направо как (7/9) * 9. Подвох в том, что (7/9) равно 0 в целочисленной арифметике. Когда вы сохраняете их как простое число с плавающей точкой, эта операция выполняется с плавающей запятой, которая может хранить 7/9 с большей точностью, чем int.
Если вы хотите выполнить расчет в одну строку без точности, попробуйте:
cout << 7.0f / 9.0f * 9.0f; </p>