Ответ 1
Разница между двумя примерами кода заключается в том, что вы передаете int.
Первая версия похожа на этот код, где вы отбрасываете целое число до вычитания:
intWorkingNumber = 176555 - (int)(1 * 100 * pow(1000, 1));
Вторая версия похожа на эту, где вы отбрасываете целое число после вычитания:
intWorkingNumber = (int)(176555 - (1 * 100 * pow(1000, 1)));
Функция pow
возвращает число с плавающей запятой. Если результат 1 * 100 * pow(1000, 1)
не точно равен 100000.0000
(и с операциями с плавающей запятой, вы не должны обычно полагаться на точные результаты), эти два не эквивалентны.
Рассмотрим этот более простой пример:
x = 10 - (int)0.001; // x = 10 - 0; => x = 10
y = (int)(10 - 0.001); // y = (int)9.999; => y = 9