C语言float格式化十六进制后变化

floata=0.0charb[3];sprintf(b,"%.1f",a);printf("b[0]=%02X\r\n",b[0]);printf("b[1]=%02X... float a=0.0
char b[3];
sprintf(b, "%.1f", a);

printf("b[0]=%02X\r\n",b[0]);
printf("b[1]=%02X\r\n",b[1]);
printf("b[2]=%02X\r\n",b[2]);

请问最后输出的为什么是
b[0]=30
b[1]=2E
b[2]=30

也就是说0.0变成了302E30
展开
 我来答
archmageee4
2018-04-24 · TA获得超过1517个赞
知道大有可为答主
回答量:1581
采纳率:78%
帮助的人:929万
展开全部
没毛病啊, 0的ascii码 是48,换算成16进制就是30. 而那个点 就是2E ,但是你写代码不要这么抠门好不好, 1.1 这个字符串至少也要占用4个byte,而你就申请3个. 这种写法在大工程中很容易出错! 多申请几个又不会怀孕!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式