Что касается вашего исходного вопроса, dollars
никогда не инициализируется. Таким образом, любое значение, которое окажется в памяти в то время, будет вашим начальным значением в долларах, к которому прибавляет ваша функция. Но вместо исправления основного, эта проблема связана с тем, что вы не присваиваете вновь рассчитанную сумму в dollars
в своей функции, что было бы ожидаемым поведением в соответствии с описанием функции.
Чтобы ответить на ваш дополнительный вопрос в комментариях, для перевода ваших центов в доллары все, что вам нужно сделать, - это вычислить cents / 100.0f
, отметив тот факт, что вы делите число с плавающей запятой 100.0f
вместо целого числа 100
, так что ваш результат сам по себе становится float
вместо int
.
Примечания:
Хотя, судя по всему, это своего рода школьное задание, все же стоит упомянуть пару вещей:
- Не хранить денежные суммы в значениях с плавающей запятой.
- Функция подпись / поведение является безумной границей.
В настоящее время вы пытаетесь достичь чего-то вроде «нормализуйте эти центы и добавьте их к этому значению». Если вы хотите написать одну функцию, которая конвертирует ваши центы в доллары, было бы более логично написать ее как
float normalizeMoney(const int cents = 150);
и затем используется как
dollars += normalizeMoney(95);
забыв о совершенно необоснованной статической переменной.