最近在用 sscanf 读取一个浮点数,显示总是出错,后来发现是 double 和float 赋值的问题,现把过程粘出来,便与以后记忆;
代码如下:
//test
char tempppp[50] = {0};
strcpy(tempppp, "npt=11.0-34.23");
double a,b;
sscanf(tempppp, "npt=%f-%f", &a, &b);
printf("a= %f, b= %f \n", a, b);
打印出来的结果如下:
a= 1048576.000000, b= 13378822144.000000
很明显是错的。
后来查资料发现, 单精度和双精度是不能相互赋值的,正确的赋值方式是:
用 %lf 给 double 变量赋值, 用 %f 给 float 变量<

本文介绍了在C语言中遇到的double和float赋值错误问题,详细展示了使用sscanf进行浮点数读取时,如何正确使用%lf和%f进行赋值。总结指出单精度和双精度赋值必须对应,显示时则可以混用%f和%lf。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



