首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮动输出、双输出输出和指数输出(C)

浮动输出、双输出输出和指数输出(C)
EN

Stack Overflow用户
提问于 2020-07-06 18:35:10
回答 1查看 140关注 0票数 0

这是我的密码:

代码语言:javascript
复制
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);
}

我的输出是:

代码语言:javascript
复制
Hello World!
a
97
10
-10
3.141593
1405670641
1.552153e-315

我的问题有三个方面:

如果双持16位,为什么输出显示7位有效数字?

为什么指数型数字显示一个完全不同的数字,可能是一个垃圾值?

此外,当我将代码更改为:printf("%lf\n", 3);时。它将输出显示为0.000000。为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-06 18:40:55

代码语言:javascript
复制
    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"说明符

代码语言:javascript
复制
printf("%.3f", 3.14159265);
printf("%.6f", 3.14159265);
printf("%.9f", 3.14159265);

printf()说明符"%lf""%f"完全相同(对于scanf()它们是不同的)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62762368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档