代码输出说明

时间:2016-11-23 19:13:26

标签: c io

问题1。

#include <stdio.h>
int main(void)
{
  float a;
  a=46.43253;
  printf("\n%d",a);
  printf("\n%f",a);
  return 0;
}

输入

  

Hello C。

     

告诉我你的事。

输出

  

Hello C。

     

告诉我你的事。

     

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

并且继续超出状态时间限制。

问题2。

{{1}}

输出

  

536870912

     

46.432529

2 个答案:

答案 0 :(得分:3)

  

输出 - 536870912

     

46.432529

通常使用不正确的格式说明符触发器undefined behavior - 这是您在printf中使用%d来打印浮点数时所拥有的。在这种情况下,您通常可以期待任何输出。

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

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

答案 1 :(得分:0)

这个街区很好:

float a;
a=46.43253;

这个街区也没关系:

printf("\n%f",a);

问题在于这个块:

printf("\n%d",a);

特别是这部分:

"\n%d"

请记住,您声明了一个浮点数并使用整数语法输出它。这就是你得到负输出的原因 如果是您不想更改“%d”的情况,则只需在输出前将其转换为浮点数