迪文科技论坛

 找回密码
 立即注册
搜索
查看: 324|回复: 6

【提问】c51语法

[复制链接]

10

主题

20

回帖

207

积分

中级会员

Rank: 3Rank: 3

积分
207
发表于 2023-7-18 09:16:51 | 显示全部楼层 |阅读模式
我目前使用的是EKT043E开发板,keill下c51开发,发现使用sprintf函数格式化的数据会异常,如下是程序仿真截图。请问这个是什么原因,有什么办法处理,涉及到字符串的处理比较多,此函数用到比较频繁

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

1228

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10484
发表于 2023-7-18 11:47:38 | 显示全部楼层
d默认是int型(两个字节),如果是一个字节,要用bd,如果是四个字节,则要用ld。
回复

使用道具 举报

10

主题

20

回帖

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2023-7-18 11:49:57 | 显示全部楼层
谢谢大佬
回复

使用道具 举报

10

主题

20

回帖

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2023-7-18 11:58:12 | 显示全部楼层
zzs999k 发表于 2023-7-18 11:47
d默认是int型(两个字节),如果是一个字节,要用bd,如果是四个字节,则要用ld。 ...

我查了下说%bd是非C标准化的,属于特定编译器等的扩展,这个扩展是keill做的还是在keill中安装的dw设备型号做的?有参考的文档吗,之前还遇到一次声明数组需要加关键字const volatile。这些规范是参考那个C版本?
回复

使用道具 举报

2

主题

1228

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10484
发表于 2023-7-18 13:29:28 | 显示全部楼层
xiao555 发表于 2023-7-18 11:58
我查了下说%bd是非C标准化的,属于特定编译器等的扩展,这个扩展是keill做的还是在keill中安装的dw设备型 ...

搜搜C51 printf,网上有详细讨论。C89版本
回复

使用道具 举报

10

主题

20

回帖

207

积分

中级会员

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2023-7-20 14:56:41 | 显示全部楼层
zzs999k 发表于 2023-7-18 13:29
搜搜C51 printf,网上有详细讨论。C89版本

C:\Users\wcg\Desktop\1.png测试发现,这个函数使用%bd无法正确解析,需要强制转换成uint16_t, 如图才能正确格式化处理,这属于什么原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

1228

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10484
发表于 2023-7-24 13:30:55 | 显示全部楼层
可能是8位的系统和32位的系统存储方式不一样,对其方式也不一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-7-12 16:57 , Processed in 0.030155 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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