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

相关推荐
青云交11 分钟前
Java 大视界 -- Java 大数据机器学习模型在金融信用评级模型优化与信用风险动态管理中的应用(371)
java·大数据·机器学习·信用评级·动态风控·跨境金融·小贷风控
求知若渴,虚心若愚。2 小时前
Error reading config file (/home/ansible.cfg): ‘ACTION_WARNINGS(default) = True
linux·前端·ansible
LinDaiuuj3 小时前
最新的前端技术和趋势(2025)
前端
二哈喇子!3 小时前
若依【(前后端分离版)SpringBoot+Vue3】
java·spring boot·后端
一只小风华~3 小时前
JavaScript 函数
开发语言·前端·javascript·ecmascript·web
程序猿阿伟4 小时前
《不只是接口:GraphQL与RESTful的本质差异》
前端·restful·graphql
若梦plus6 小时前
Nuxt.js基础与进阶
前端·vue.js
樱花开了几轉6 小时前
React中为甚么强调props的不可变性
前端·javascript·react.js
风清云淡_A6 小时前
【REACT18.x】CRA+TS+ANTD5.X实现useImperativeHandle让父组件修改子组件的数据
前端·react.js
小飞大王6666 小时前
React与Rudex的合奏
前端·react.js·前端框架