关于C语言的一道题:
#include<stdio.h>intmain(void){printf("%f\n",5);printf("%d\n",5.01);return0;}请问这道题的输出...
#include <stdio.h>
int main(void)
{
printf("%f\n",5);
printf("%d\n",5.01);
return 0;
}
请问这道题的输出结果是什么?为什么? 展开
int main(void)
{
printf("%f\n",5);
printf("%d\n",5.01);
return 0;
}
请问这道题的输出结果是什么?为什么? 展开
6个回答
展开全部
第一句自不必多说,把一个整型数当作浮点类型来打印,假设为32位计算机默认取此双字单元中23位有效数字和8位的尾数来打印输出,结果当然不能确定。
第二句刚好相反,你可以把5.01自己用浮点数在内存中的存放方式画出来看,可打印个定值
第二句刚好相反,你可以把5.01自己用浮点数在内存中的存放方式画出来看,可打印个定值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%f是浮点数float的输出格式,%d是整型int的输出格式,float类型保留精度7位,整数部分加上小数点一共七位,所以在输出时候会自动类型转换加上小数点。int类型只输出整数部分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
5.01 在内存中 以十六进制表示
0x40140a3d70a3d70a%d 是以 int 形式读取 所以只能读 32 位%d 读了 低32位 也就是 70a3d70a
转成 十进制 1889785610 另一个我不会 给你参照参照 希望对你有帮助
0x40140a3d70a3d70a%d 是以 int 形式读取 所以只能读 32 位%d 读了 低32位 也就是 70a3d70a
转成 十进制 1889785610 另一个我不会 给你参照参照 希望对你有帮助
追问
0x40140a3d70a3d70a
这个十六进制数是怎么来的啊,恕我蠢钝,还请明示,不胜感激!
追答
这个涉及到浮点型的储存问题 说起来 比较麻烦 你百度 浮点数在计算机里如何存储什么的...
看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个是把整型数据格式输出为浮点型数据,这个主要还是看float的小数点有效位数,我也不太记得了,6-7位,是哪一个我也不记得了。
第二个是把浮点型数据格式输出为整形,就会把小数点部分省略,记住这里不是数学上的四舍五入,不管多大的小数部分都会扔掉。
输出是什么你应该知道的,运行代码就OK
第二个是把浮点型数据格式输出为整形,就会把小数点部分省略,记住这里不是数学上的四舍五入,不管多大的小数部分都会扔掉。
输出是什么你应该知道的,运行代码就OK
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
5.000000
5
5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询