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

相关推荐
Felix_XXXXL41 分钟前
IDEA + Spring Boot 的三种热加载方案
java·后端
我命由我1234541 分钟前
IDEA - IDEA 快速回到页面首尾、页面快速滑动、快速定位到指定行
java·运维·ide·后端·java-ee·intellij-idea·intellij idea
Mickyจุ๊บ1 小时前
IDEA 插件推荐
java·ide·intellij-idea
命运之光1 小时前
【快速解决】idea运行javafx错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序
java·ide·intellij-idea
辻戋2 小时前
从零实现React Scheduler调度器
前端·react.js·前端框架
徐同保2 小时前
使用yarn@4.6.0装包,项目是react+vite搭建的,项目无法启动,报错:
前端·react.js·前端框架
Qrun3 小时前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
中国lanwp3 小时前
全局 npm config 与多环境配置
前端·npm·node.js
JELEE.4 小时前
Django登录注册完整代码(图片、邮箱验证、加密)
前端·javascript·后端·python·django·bootstrap·jquery