| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 372 人关注过本帖
标题:请高手帮忙看一下这个题:
只看楼主 加入收藏
lateraware
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2012-2-9
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:2 
请高手帮忙看一下这个题:
#include <iostream>using namespace std;

int main()

{

 union{ /*定义一个联合*/

  int i;

  struct{ /*在联合中定义一个结构*/

   char first;

   char second;

  }half;

 }number;

 number.i=0x4241; /*联合成员赋值*/

 printf("%d\n%d\n", number.half.first, number.half.second);

 number.half.first='a'; /*联合中结构成员赋值*/

 number.half.second='b';

 printf("%x\n", number.i);

 system("pause");

 return 0;

}


结果是:

65(0100 0001)为什么?

66(0100 0010)

6261

搜索更多相关主题的帖子: 结构 system 联合 include return 
2012-10-02 17:22
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3451
专家分:19340
注 册:2012-3-31
收藏
得分:0 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-10-02 17:41
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:20 
你在联合体中一共存的就是 0x4241呗,
为i赋值的时候相当于char first = 0x41,char second = 0x42 (小端顺序)
所以你printf出来就是0x41和0x42的十进制值啊,就是65,66
然后你对char first,char second 赋值,用十六进制打出来,正是6261呗
2012-10-03 12:22
快速回复:请高手帮忙看一下这个题:
数据加载中...
 
   



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

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