读书人

用16进制打印一个char type的值结果

发布时间: 2012-02-27 10:00:22 作者: rapoo

用16进制打印一个char type的值,结果是ff80,不解!
我尝试用循环加1的方式,试图找出char type能表示的最大值和最小值(不同于打印limits.h的符号常量的思路)

思路是就是两个char type变量,previous用于存储加1前的值,current用于存储加1后的值,当找到previous > current的时候,这个previous就是最大值。最小值就用减1来循环。
当我用10进制打印最大和最小时,结果是:127和-128
可是当我用16进制打印时,结果却是:ff和ff80

请问大家,这个明明是char的最小值,怎么会变成16位的ff80?

[解决办法]
不知道说明白了没有
因为printf不知道后面参数类型,所以把char类型转换成int类型传给printf
而char型转int类型就需要位扩展,原来ch的是分别是0x7f和0x80,位扩展后就是0x007f,0xff80(楼主的编译器把整型用2个字节表示),输出就是7f和ff80啦

读书人网 >C语言

热点推荐