Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10489
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-19 09:54
文章分类
文章存档

2016年(1)

2015年(2)

我的朋友
最近访客

分类: C/C++

2015-05-08 10:31:02

如果要用4个单字节字符变量来填充1个整型变量可以这样做:
  1. int a=0;
  2. char b[4];
  3. for(j=0; j<4; j++)
  4. {
  5.     a |= b[j]<<(8*j);
  6. }
但这样做结果是不对的,因为b为char类型数组,为有符号数。而a为整型,因此b[j]首先会进行符号位扩展。
如果b[j]的高位为1,则在左移之前首先将高字节都扩展为ff。因此最终结果不正确。
将数组b定义为无符号字符数组即可:
  1. int a;
  2. unsigned char b[4];
  3. for(j=0; j<4; j++)
  4. {
  5.     a |= (b[j])<<(8*j);
 
阅读(953) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~