【发布时间】:2018-01-28 06:54:17
【问题描述】:
代码
char a;
a = 0xf1;
printf("%x\n", a);
输出
fffffff1
printf() 显示 4 个字节,恰好我们在 a 中有一个字节。
这种不当行为的原因是什么?
如何改正?
【问题讨论】:
-
格式错误。试试
int a -
char a;-->unsigned char a; -
它被转换为一个整数,从而扩展了符号
-
A
char无论如何都会通过整数提升提升为int.... -
@EsmaeelE 标准 C 中没有要求 ASCII 是使用的字符集。考虑到 C 也可以在使用 EBCDIC 的机器上运行。