考虑这个小程序:
#include <stdio.h>
int main()
{
char c = 0xFF;
printf("%d\n", c);
return 0;
}
正如预期的那样,它的输出是-1
(考虑char
在我的系统中签名)。我想做的是让它打印255
。这当然是对真实情况的简化,我不能只定义
c
为无符号。
第一个可能的更改是使用%u
as formatter,但这里适用通常的类型提升规则,并且数字打印为 2 32 - 1。
那么有没有办法在将签名的字符提升为int之前将其读取为无符号?我可以创建一个指向设置为地址的无符号字符的指针c
,然后再取消引用它,但不确定这是否是最好的方法。