解决方案
5
%f -> float
%lf -> double
%lf -> double
10
输入改成scanf(“%lf”, &a);
输出随意。
输出随意。
6
你sizeof(float)和sizeof(double)看一下,是不是4字节和8字节
假如是的话,你假如用scanf(“%f”, &a);那么a这个double变量只被写入了4字节的数据
输出的时候自然就输出一坨垃圾值了
假如是的话,你假如用scanf(“%f”, &a);那么a这个double变量只被写入了4字节的数据
输出的时候自然就输出一坨垃圾值了
4
“%f” 对应 float
%lf 对应 double
%lf 对应 double
2
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
1
1楼正解,很多刚开始学者用double时都按照%f来用,其实是lf,注意是L不是数字1
1
题主可以看一下不同变量类型所占的内存大小的区别,还是有点用的
20
你定义的double无论在64位还是32位系统都占8B=8*8b
1
输入改成scanf(“%lf”, &a);
输出随意。
输出随意。