amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 2266|回复: 10

Keil C51 使用 sprintf 的疑惑

[复制链接]
发表于 2015-7-30 10:48:12 | 显示全部楼层 |阅读模式
本帖最后由 yxylxj 于 2015-7-30 10:52 编辑

char buff[20]={0};
sprintf(buff,"%d\r\n",10);
串口打印出 buff  不对


改为:
char buff[20]={0};
int a =10;
sprintf(buff,"%d\r\n",a);结果正确


另外 哪里有 介绍 C51 Keil 中关于
char  ----------%c
unsigned char   
int  --------%d
unsigned  int  
unsigned   long  对应的通配符
 楼主| 发表于 2015-7-30 11:17:54 | 显示全部楼层
自问自答吧
print.png
发表于 2015-7-30 11:28:34 | 显示全部楼层
把下面代码替换一下:
sprintf(buff,"%d\r\n",10);   --> sprintf(buff,"%d\r\n",(int)10);
发表于 2015-7-30 12:55:03 来自手机 | 显示全部楼层
我在stm32下用sprintf无法打印浮点型数据
发表于 2015-9-28 12:04:08 | 显示全部楼层
justdomyself 发表于 2015-7-30 12:55
我在stm32下用sprintf无法打印浮点型数据


在stm32使用 sprint

float k = 0.0003f;


sprintf("\r\nFLOAT = %0.4f", (float)k);   // 输出小数点后4位数据
发表于 2015-9-28 12:25:23 | 显示全部楼层
c51下,答应char类型的,记得好像是用"%bd"
发表于 2015-9-28 13:00:46 来自手机 | 显示全部楼层
默认是int,所以字节时候要么打印格式选择b开始的,要么将变量强制转换成16位的,像3楼或者六楼那样
发表于 2015-9-28 22:10:56 | 显示全部楼层
hpdell 发表于 2015-9-28 12:04
在stm32使用 sprint

float k = 0.0003f;

我的是时灵时不灵

本来一开始好好的,修改下代码后  就貌似又不行了   改的地方完全一点关系都没有


有的时候再改下优化等级就行了


不行的时候现象是,任何浮点数据  ,转成字符串就变成了0.0,


(float),需要加这个强制转化么?
发表于 2015-9-29 12:01:31 | 显示全部楼层
justdomyself 发表于 2015-9-28 22:10
我的是时灵时不灵

本来一开始好好的,修改下代码后  就貌似又不行了   改的地方完全一点关系都没有

貌似一般情况下,加上比较好一点吧
发表于 2015-9-30 16:58:32 | 显示全部楼层
hpdell 发表于 2015-9-29 12:01
貌似一般情况下,加上比较好一点吧

不知道我说的情况你在stm32上有没有遇到过
发表于 2015-10-1 09:15:46 | 显示全部楼层
justdomyself 发表于 2015-9-30 16:58
不知道我说的情况你在stm32上有没有遇到过

目前为止木有遇到过你说的情况哦
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-20 14:33

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表