考虑这个小程序:
#include <stdio.h>
int main()
{
char c = 0xFF;
printf("%d\n", c);
return 0;
}
其输出为-1
,正如预期的那样(考虑char
已在我的身上签名
系统)。我要做的是让它打印255
。这是
当然是对实际情况的简化,我无法定义
c
为无符号。
第一个可能的更改是使用%u
作为格式化程序,但是
通常的类型促销规则适用于此处,数字打印为
2 32 - 1。
所以有没有办法在获取之前将签名的char读作unsigned
提升为int?我可以创建一个指向unsigned char设置的指针
c
的地址,稍后取消引用,但不确定这是否是最好的
方法
答案 0 :(得分:4)
c
。将c
投射到unsigned以使用未签名的促销。
printf("%u\n", (unsigned char)c);
Unsigned char将被提升为unsigned int。