51单片机如何使用printf打印unsigned long的那些事

51单片机在处理32bit的数要特别注意:

下面代码咋一看regmask当作32bit数进行操作,没什么问题。

c 复制代码
unsigned long  regmask = 0;
regmask = ~((1<<startbit) -1);
regmask &= ((1<<endbit) -1)|(1<<endbit);
RegValue &= regmask;

在51的IDE中这么写,会把移位的1当作16bit的数来操作,导致结果和预想不一致。

正确的写法是在1前面加UL

c 复制代码
unsigned long  regmask = 0;
regmask = ~((1UL<<startbit) -1);
regmask &= ((1UL<<endbit) -1)|(1UL<<endbit);
RegValue &= regmask;

还有,51单片机的float和double是一样的,这个也要特别注意一下。

说完了运算,再说说printf

大家都知道

c 复制代码
%d: 十进制整数
%u: 无符号整数
%f: 浮点数
%s: 字符串
%c: 单个字符
%x, %X: 十六进制整数

对于unsigned long,需要使用%lu,对于限定精度的浮点数需要加入数字限定%.1f

相关推荐
Moment11 小时前
Vibe Coding 时代,到底该选什么样的工具来提升效率❓❓❓
前端·后端·github
IT_陈寒12 小时前
SpringBoot性能飙升200%?这5个隐藏配置你必须知道!
前端·人工智能·后端
小时前端13 小时前
React性能优化的完整方法论,附赠大厂面试通关技巧
前端·react.js
Nicko13 小时前
Jetpack Compose BOM 2026.02.01 解读与升级指南
前端
小蜜蜂dry14 小时前
nestjs学习 - 控制器、提供者、模块
前端·node.js·nestjs
优秀稳妥的JiaJi14 小时前
基于腾讯地图实现电子围栏绘制与校验
前端·vue.js·前端框架
前端开发呀14 小时前
从 qiankun(乾坤) 迁移到 Module Federation(模块联邦),对MF只能说相见恨晚!
前端
没想好d14 小时前
通用管理后台组件库-10-表单组件
前端
恋猫de小郭14 小时前
你用的 Claude 可能是虚假 Claude ,论文数据告诉你,Shadow API 中的欺骗性模型声明
前端·人工智能·ai编程
_Eleven15 小时前
Pinia vs Vuex 深度解析与完整实战指南
前端·javascript·vue.js