标题:有一个程序看不太懂
只看楼主
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
 问题点数:0 回复次数:5 
有一个程序看不太懂
int main()
{
unsigned int result = 0x0000;
unsigned char a=0x12;
unsigned char b=0x34;
((unsigned char *)&result)[0]=a;// unsigned int 类型强制转换成unsigned char指针
printf("result=%d\n",result);
printf("&reslult=0x%x\n",&result);//0x12
((unsigned char *)&result)[1]=b;
printf("result= 0x%x\n\n",result); //0x3412
system("pause");
return 0;
}
为什么result的最终输出结果为0x3412,这个程序的功能貌似是将两个字节数据重组为字数据, ((unsigned char *)&result)[0]=a有什么作用?麻烦哪位明白的帮我看一下啊

[此贴子已经被作者于2007-9-15 17:12:11编辑过]

搜索更多相关主题的帖子: system return result 
2007-09-15 16:58
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
((unsigned char *)&result)是result的第一个字节的地址,
((unsigned char *)&result)[0]=a等价与*((unsigned char *)&result)=a,
((unsigned char *)&result)[1]=b等价于 *(((unsigned char *)&result)+1)=b;

这个程序是在result的第一个字节中写入0x12,第二个字节写入0x34

PS:你的ID和论坛老大很像
2007-09-15 17:42
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
得分:0 
是很像,只不过是中间缺点什么~~~~

[此贴子已经被作者于2007-9-15 17:44:11编辑过]



偶学编程,也许本身就是一个错。。。
2007-09-15 17:43
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 
呵呵...
我也没想到我的用户ID竟与论坛老大如此相像

英者自知,雄者自胜
2007-09-15 20:23
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 

我还有一个问题,怎么通过result的首地址输出第二个字节的值0x34?


英者自知,雄者自胜
2007-09-15 20:27
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
我上面的帖子你看懂没有?

已经说了((unsigned char *)&result)[1]是第二个字节,显然可以这样输出:
printf("0x%x",((unsigned char *)&result)[1]);
2007-09-15 20:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-170194-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.210388 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved