首页 > 解决方案 > 打印存储在 unsigned int 中的实际负数

问题描述

我有一个奇怪的问题。我有一个变量,其实际值仅为负数(仅为该变量生成负整数)。但是在遗留代码中,我的一位老同事使用 uint16 而不是 signed int 来存储该变量的值。现在,如果我想打印该变量的实际负值,我该怎么做(对我们来说是什么格式说明符)?例如,如果实际值为 -75,当我使用 %d 打印时,它会给我 5 位数的正值(我认为这是因为二进制补码)。我想将其打印为 75 或 -75。

标签: c

解决方案


#include <inttypes.h>

uint16_t foo = -75;
printf("==> %" PRId16 " <==\n", foo); // type mismatch, undefined behavior

推荐阅读