scanf格式警告为double

时间:2017-02-11 19:39:40

标签: c pointers double scanf

我正在处理的程序遇到一个小问题,我一直收到警告jcenter() 所以我很确定这是format '%1f' expects type 'float *' but argument 2 has type 'double *'格式的问题。

我已经尝试过寻找解决方案,但似乎无法找到解决方案。

此函数读入两个数字。

scanf

4 个答案:

答案 0 :(得分:3)

scanf("%lf", n1)使用double;注意" l" (el,not" one")。 如果您不熟悉编程,请尝试熟悉文档,例如: cppreference。例如,在那里您可以找到scanf的格式和长度矩阵。

享受学习编程的乐趣,使用谷歌等,并且不要犹豫,问: - )

答案 1 :(得分:2)

你输错了,然后你复制了它......

scanf("%1f", n1);

应该写

scanf("%lf", n1);

请注意l(小写L)和1(第一位)之间的差异。

%lf代表long float,它不是实际的C类型,而是区分float%f)和double%lf的方法)。 l可与di一起使用,为long int指定ulong unsigned int

这些字符很难区分,特别是对于用于编程的固定间距字体,出于这个原因,应该避免命名变量lll等和long整数常量1l应写为1L

答案 2 :(得分:1)

对双数据类型使用%lf格式说明符。

答案 3 :(得分:1)

为各自的数据类型使用正确的格式说明符

  • float %f
  • double %lf
  • int %d%i
  • unsigned int %u
  • char %c
  • char * %s
  • long int %ld
  • long long int %lld