问题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
答案 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”的情况,则只需在输出前将其转换为浮点数