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

相关推荐
做运维的阿瑞18 小时前
Windows 环境下安装 Node.js 和 Vue.js 框架完全指南
前端·javascript·vue.js·windows·node.js
李贺梖梖18 小时前
DAY23 单例设计模式、多例设计模式、枚举、工厂设计模式、动态代理
java
武昌库里写JAVA18 小时前
Java设计模式之工厂模式
java·vue.js·spring boot·后端·sql
Dontla20 小时前
Tailwind CSS介绍(现代CSS框架,与传统CSS框架Bootstrap对比)Tailwind介绍
前端·css·bootstrap
yinuo20 小时前
uniapp微信小程序安卓手机Touchend事件无法触发
前端
赛姐在努力.20 小时前
SpringMVC中的常用注解及使用方法
java·spring
让我上个超影吧21 小时前
黑马点评秒杀优化和场景补充
java
寻星探路21 小时前
Java EE初阶启程记06---synchronized关键字
java·java-ee
沉木渡香21 小时前
【VSCode中Java开发环境配置的三个层级之Maven篇】(Windows版)
java·vscode·maven
EnCi Zheng1 天前
Spring Boot 4.0.0-SNAPSHOT @Configuration 问题解决指南
java·spring boot·spring