Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1698392
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: C/C++

2010-07-07 14:37:29

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned int a = 0xfffffff7;
    unsigned char i = (unsigned char)a;
    char *b = (char *)&a;
    printf("%08x,%08x\n",i,*b);//000000f7,fffffff7
}


在32位机器上,不管指针指向的是什么类型的对象,指针统一大小为4字节(sizeof(int*)==sizeof(char*)==sizeof(string*)==4)。

unsigned char i = (unsigned char)a;//此行代码的意思是,把unsigned int类型的a转换为unsigned char类型,发生截断。

char *b = (char *)&a;//此行代码的意思是:把&a即unsigned int *类型的指针转换为char *类型的指针,指的是指针类型的转换,大小是一样的,不发生截断,所以b指向的还是a.

阅读(1301) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~