【发布时间】:2011-12-06 07:28:53
【问题描述】:
考虑这个小程序:
#include <stdio.h>
int main()
{
char c = 0xFF;
printf("%d\n", c);
return 0;
}
它的输出是-1,正如预期的那样(考虑到char在我的
系统)。我想做的是让它打印255。这是
当然是对真实情况的简化,我不能只定义
c 未签名。
第一个可能的更改是使用%u 作为格式化程序,但是
通常的类型提升规则在这里适用,并且数字打印为
232 - 1.
那么有什么方法可以在 之前将已签名的字符读取为未签名的字符
提升为int?我可以创建一个指向无符号字符集的指针
c 的地址,稍后取消引用,但不确定这是否是最好的
接近。
【问题讨论】:
标签: c char int type-conversion integer-promotion