不同类型指针转换的一个疑问

xmuchen Xmu 研究员/技术专家/教授  2010-07-25 05:19:25
今天在处理一个不同类型指针转换时遇到一个问题,比如如下一段代码

int a = 0xffffff30;
int *pa = &a;
char *ca = (char *)pa;
printf("%x\n", *ca);

输出应该是30,这个好理解,因为ca指针指向的是char类型的数据,就是一个字节。但是如果给变量a赋的初值为0xfffffff0时,运行后输出结果却是完整的a的值(也即输出了4个字节的数据)。
请问大家这个是怎么回事??
...全文
32 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪影 2010-07-25
int a = 0xffffff30;
int *pa = &a;
char *ca = (char *)pa;
printf("%x\n", (int)*ca); //隐式转换

当int a = 0xffffff30;时,*ca== 0x30;(十进制48); int b = (int)*ca ; b=48(十进制) 转换成十六进制为 0x30
当int a = 0xffffffF0;时,*ca==0xf0(十进制-16); int b = (int)*ca ; b=-16(十进制) 转换成十六进制为 0xffffffF0

回复
hastings 2010-07-25
回到老问题上来了:
printf("%f\n", 10/3);
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告