Member 13039393 Ответов: 1

Пожалуйста, объясните, почему этот код не будет работать..


Разве %f не является спецификатором формата для double? Я видел пару раз, что это...пожалуйста, объясните........................

Что я уже пробовал:

#include<stdio.h>
#include<conio.h>
void main()
{
   double d;
   scanf("%f",&d);
   printf("%f",d);
   getch();

}

1 Ответов

Рейтинг:
7

OriginalGriff

%f-это код формата для float, а не double. Поскольку double в два раза больше float, когда вы читаете значение float в память для double, полученное значение не является правильным.
Попробуйте вместо этого %lf.


Richard MacCutchan

Интересно, интересно, почему его не принуждают к двойному?

OriginalGriff

Потому что это указатель void, когда он попадает в функцию - scanf не знает, что вы передали ему указатель на double, и вы специально попросили float. Точно так же, как вы можете передать указатель int в %s scanf (и взорвать стек!)

Richard MacCutchan

Да, мой глупый вопрос.

CPallini

5.