技术解析

请教一个 unsigned char 和 signed char 的小问题
0
2021-07-01 18:45:28
idczone
c 语言
char c = 0xff;
char *cp = &c;
printf("%x",*cp);
输出结果是 ffffffff ,当把第二行换成
unsigned char *cp = &c;
时,输出就是 ff 。这是为什么啊,不都是指向一个字节的指针吗?
%x 会先转成 unsigned int 的

signed/unsigned char 都会先进行整型提升到 int/unsigned int
signed char 最高符号位扩展(补码), unsigned char 其实是 0x000000ff
很简单的东西,楼主刚入门吧


确实刚入门,谢谢两位啦

然而事实是 default argument promotions 跟%x 并没什么卵关系,扔进去个整数类型都提升,扔进去个 float 给转成 double ,至于对不上号 UB 作死了是另一回事。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服