То, почему делает scanf (), нуждаются в “%lf” для, удваивается, когда printf () хорошо только с “%f”?

174
задан alk 7 October 2017 в 14:00
поделиться

4 ответа

Поскольку C будет способствовать плаваниям, удваивается для функций, которые берут аргументы переменной. Указатели ни на что не продвинуты, таким образом, необходимо использовать %lf, %lg или %le (или %la в C99) для чтения в удваивается.

203
ответ дан Jonathan Leffler 23 November 2019 в 20:32
поделиться

scanf потребности знать, что размер данных, указываемых &d, заполняется, это правильно, тогда как функции variadic способствуют плаваниям, удваивается (не совсем уверенный, почему), таким образом printf всегда добирается double.

16
ответ дан DigviJay Patil 23 November 2019 в 20:32
поделиться

Поскольку иначе scanf будет думать, что Вы передаете указатель на плавание, которое является меньшим размером, чем двойное, и он возвратит неправильное значение.

7
ответ дан Jim Buck 23 November 2019 в 20:32
поделиться

Или Используя плавание или Используя двойное значение в выражении C приведет к значению, которое является двойным так или иначе, таким образом, printf не может сказать различие. Принимая во внимание, что указатель на двойное должен быть явно сообщен к scanf в отличие от указателя на плавание, потому что то, на что указывает указатель, - то, что имеет значение.

2
ответ дан fcw 23 November 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: