首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码输出解释

代码输出解释
EN

Stack Overflow用户
提问于 2016-11-23 19:13:26
回答 2查看 106关注 0票数 0

问题1.

代码语言:javascript
复制
#include <stdio.h>
int main(void)
{

  int c;
  while((c=getchar())!='\0')
   {
     putchar(c);
   } 
}

输入

你好C. 跟我说说你。

输出

你好C. 跟我说说你。 /T14359.1-1990作为一种常见的一种新的生产方法

而且它还在继续,状态超过了时间限制。

问题2.

代码语言:javascript
复制
#include <stdio.h>
int main(void)
{
  float a;
  a=46.43253;
  printf("\n%d",a);
  printf("\n%f",a);
  return 0;
}

输出

536870912 46.432529

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-23 19:20:40

产出- 536870912 46.432529

通常,使用不正确的格式说明符会触发未定义行为 --这就是在printf中使用%d打印浮点时所拥有的。在这种情况下,通常可以期望任何输出。

但是,也可能是因为您指定将浮点数读取为整数(例如,通过使用%d说明符),因此它只是将结果解释为整数--因此产生了奇怪的数字(因为浮点数和整数的存储方式不同)。

如果您感兴趣的是,为什么第二个printf打印的数字与您的略有不同,可能会帮助您。

票数 3
EN

Stack Overflow用户

发布于 2016-11-23 20:10:38

这个街区很好:

代码语言:javascript
复制
float a;
a=46.43253;

这个街区也很好:

代码语言:javascript
复制
printf("\n%f",a);

问题在于这个块:

代码语言:javascript
复制
printf("\n%d",a);

特别是这一部分:

代码语言:javascript
复制
"\n%d"

请记住,您声明了一个浮点数,并使用整数语法输出它。这就是为什么你要得到负输出,如果你不想改变"%d“,然后简单地在输出之前把它转换成浮点数

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

https://stackoverflow.com/questions/40772463

复制
相关文章

相似问题

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