首页 > 其他 > 详细

8位无符号和8位有符号转化为更高字节类型的问题

时间:2015-05-19 10:24:23      阅读:226      评论:0      收藏:0      [点我收藏+]
main()
{
    unsigned char uch=0xff;    //数值为255     
    char ch=0xff;                    //数值为-1
    int i=0;                             

    i=i+uch;
    printf("%x\n",i);

    i=0;
    i=i+ch;
    printf("%x\n",i);

}

运行结果为:

ff          

ffffffff

解释:C语言将低字节类型转化高字节类型时,转化会保证转化前后所对应的数值不变,而不是保证转化后的低字节的各个比特位与之前相同、高字节为0。

为什么两者不能同时保证,那是因为计算机存储的是补码。而当要转换的是8位无符号类型时,它的补码就是原码,所以转化之后不会对高字节产生影响。

 

8位无符号和8位有符号转化为更高字节类型的问题

原文:http://www.cnblogs.com/2seek/p/4513706.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!