这是我的密码:
void main()
{
printf("%s\n", "Hello World!");
printf("%c\n",'a');
printf("%d\n", 'a');
printf("%d\n",10);
printf("%d\n", -10);
printf("%lf\n", 3.14159265);
printf("%d\n", 3.14159265);
printf("%e\n", 314159265);
}我的输出是:
Hello World!
a
97
10
-10
3.141593
1405670641
1.552153e-315我的问题有三个方面:
如果双持16位,为什么输出显示7位有效数字?
为什么指数型数字显示一个完全不同的数字,可能是一个垃圾值?
此外,当我将代码更改为:printf("%lf\n", 3);时。它将输出显示为0.000000。为什么会这样呢?
发布于 2020-07-06 18:40:55
printf("%d\n", 3.14159265); // a)
printf("%e\n", 314159265); // b)a)转换说明符"%d"需要一个int值;值3.14159265具有double类型。试试printf("%f", 3.14159265);或printf("%d", 3);
b)转换说明符"%e"需要一个double值;值314159265具有int类型。试试printf("%d", 314159265);或printf("%f", 3.1415926);
转换说明符和关联值不匹配会调用未定义的行为。
要打印特定数量的小数,请使用"%.nf"说明符
printf("%.3f", 3.14159265);
printf("%.6f", 3.14159265);
printf("%.9f", 3.14159265);printf()说明符"%lf"与"%f"完全相同(对于scanf()它们是不同的)
https://stackoverflow.com/questions/62762368
复制相似问题