C的char与unsigned char的问题

2025-02-24 16:14:11
推荐回答(3个)
回答1:

unsigned char 就是 8 bit 整型,一个字节一个字节打印,你可以用 %d 格式,看出10进制值。

但一般来说,用16进制比较方便,8 bit, 正好用 两个 16 进制表示。用 %02x 格式显示,特方便。

如果涉及 unsigned char 数据流,大端小端,涉及int,double等转换,配上联合体,很容易操作。

回答2:

ANSI C89 标准规定:
char 的最小范围是 0到127
signed char 的最小范围是 -127到127
unsigned char 的最小范围是 0到255
char 类型只是为了能容纳字符型的值,它实际上是小整型,缺省的 char 要么是 signed char,要么是 unsigned char,这取决于编译器,如果移植性比较重要, 那么 char 是否有符号就会带来问题,最好是将 char 的使用范围限制在 signed char 和 unsigned char 的交集之内。
你这里 char 是有符号的,表示范围是 -127到127,故 char c2=255; 已经造成溢出,补码表示就是 -1,在类型扩展为整型时同时也进行符号扩展,故得到的是 -1,这时 printf 以 %d 解释变量 b,得到的仍是 -1 。

回答3:

unsigned char 也不能放下173240016,用int 吧