#include <stdio.h>
int main()
{
short int x = -10;
// 原码 - 1000 0000 0000 1010
// 反码 - 1111 1111 1111 0101
// 补码 - 1111 1111 1111 0110
// F F F 6(我以为的结果)
// 结果 - fffffff6, 好像占用4个字节
printf("%x\n", x);
}
刚开始看C语言,不太明白
求解,谢谢诸位
以
printf("%x", n)
的打印结果 ff ff ff f6,去判定参数 n 的长度为 4 字节,是错误的。根据 C 语言规范,printf 函数的 x 修饰符在没有指定长度时,默认转换成 unsigned int 类型。
即在本例中
printf("%x", n)
等同于printf("%x", (unsigned int)n)
。要将参数 n 按原数据类型打印,可以这样
参考
[1] C printf, http://www.cplusplus.com/refe...