蛇王波后 电影:printf("i1=%d,i1=%0,i1=%x,i1=%u\n",i1,i1,i1,i1,);解释一下?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/12 12:21:37
int i1=-1
i1=-1,i1=177777,i1=ffff,i1=65535
符号整型怎么转换为无符号的.

printf函数从参数表中取数,并不知道
原来数据是什么类型,只是根据格式串
中的指令从参数表中取数并翻译显示。

因为-1的机内码为0xFFFF,
而无符号数65535的机内码也是0xFFFF,
所以printf并不知道你要表示成-1还是65535,
只能老老实实根据参数表翻译。
所以:
%O: 八进制对应 177777
%x:十六进制对应 ffff
%X:十六进制对应 FFFF
%u: 无符号十进制 65535

这个是因为整型的数是有符号的范围是-2^15~2*2*15-1
没符号的是0~2^16-1
%u就是表示无符号的类型的