双精度扫描的scanf格式警告
我正在使用的程序有一个小问题,我一直收到警告双精度扫描的scanf格式警告,c,pointers,double,scanf,C,Pointers,Double,Scanf,我正在使用的程序有一个小问题,我一直收到警告格式“%1f”需要类型“float*”,但参数2的类型为“double*”,因此我很确定这是我的scanf格式的问题 我试过到处寻找解决办法,但似乎找不到 此函数读取两个数字 void read(double *n1, double *d1) { printf("Enter the number n1: "); scanf("%1f", n1); printf("Enter the number d1: "); scan
格式“%1f”需要类型“float*”,但参数2的类型为“double*”
,因此我很确定这是我的scanf
格式的问题
我试过到处寻找解决办法,但似乎找不到
此函数读取两个数字
void read(double *n1, double *d1)
{
printf("Enter the number n1: ");
scanf("%1f", n1);
printf("Enter the number d1: ");
scanf("%1f", d1);
}
对双重数据类型使用
%lf
格式说明符。您键入了一个错误,然后复制了它
scanf("%1f", n1);
应该写
scanf("%lf", n1);
请注意l
(小写l)和1
(数字1)之间的区别
%lf
代表长浮点数,它不是实际的C类型,而是区分浮点数(%f
)和双浮点数(%lf
)的一种方法。l
可与d
和i
一起使用,以指定长整数
和u
的长无符号整数
这些字符很难区分,特别是对于用于编程的固定间距字体,因此,应避免命名变量l
,ll
等,并且long
整数常量1l
应写入1l使用scanf(%lf),n1)
用于双重;请注意“l”(el,而不是“一”)。
如果您是编程新手,请尝试熟悉文档,例如。例如,您可以在这里找到为scanf
指定的格式和长度矩阵
从学习编程中获得乐趣,使用google等,并毫不犹豫地询问:-)为各自的数据类型使用正确的格式说明符
float%f
double%lf
int%d
或%i
unsigned int%u
char%c
char*%s
long int%ld
long-long-int%lld
对于您想要的双倍%lf
。非%1f
。(但很容易忽略差异!)使用“%lf”
(即“长浮点”)作为我现在看到的两个可能的副本,我觉得很愚蠢。我已经做了一个小时了。对编程来说还是相当陌生的。谢谢你的友好态度!