c - 打印存储在 unsigned int 中的实际负数
问题描述
我有一个奇怪的问题。我有一个变量,其实际值仅为负数(仅为该变量生成负整数)。但是在遗留代码中,我的一位老同事使用 uint16 而不是 signed int 来存储该变量的值。现在,如果我想打印该变量的实际负值,我该怎么做(对我们来说是什么格式说明符)?例如,如果实际值为 -75,当我使用 %d 打印时,它会给我 5 位数的正值(我认为这是因为二进制补码)。我想将其打印为 75 或 -75。
解决方案
#include <inttypes.h>
uint16_t foo = -75;
printf("==> %" PRId16 " <==\n", foo); // type mismatch, undefined behavior
推荐阅读
- android - 以字符串为索引的Android数组
- youtube-api - 无法通过 API 访问某些 youtube 播放列表
- mysql - 将 gzip mysql 表文件加载到我的本地 mysql 时出错
- javascript - javascript中的回调解释
- querydsl - 在 QueryDsl 中 - 是否可以加入针对返回表的 sql 函数
- java - Spring Boot Repository.save() 方法不起作用 - 没有提交
- python - Panda DataFrame 中的序列化数组到列
- python - PySpark:为缺失日期添加新行,按另一列中的唯一值分组
- powershell - 从批处理文件调用时从 Send-MailMessage cmdlet 捕获错误
- java - 为什么 Spring MVC 没有找到通向我的视图的路径?