Удваивает поведение странно при вводе через scanf - PullRequest
0 голосов
/ 11 января 2012

Я внедрил небольшой калькулятор cmd в Objective-C для практики ООП.Я получал входные данные для парных чисел через scanf() и для получения входных данных я использовал %f для форматирования, а затем помещал его в переменную double.По некоторым причинам это всегда читало бы ввод нечетным.Я не знаю, что происходит, но когда я изменил все типы на int, это сработало отлично.

1 Ответ

5 голосов
/ 11 января 2012

Формат scanf() для двойной строки "%lf".

printf() может использовать один и тот же формат "%f" как для float, так и для double, поскольку float аргументы для функций с переменными числами повышаются до double. Для scanf() такого продвижения нет, потому что вы передаете указатель, и вам необходимо иметь в памяти фактический объект float или double.

...