很简单的一段代码,有点搞不懂。帮忙看看谢谢

txing 2005-03-23 10:30:41
#include <iostream>
using namespace std;

void disp_binary(unsigned u); //这里的unsigned u 定义的U是什么类型?是整型还是字符型?还是两者都是?

union swap_bytes{
short int num;
char ch[2];
};

int main()
{
swap_bytes sb;
char temp;

sb.num = 15; //二进制形式 :0000 0000 0000 1111

cout << "Original bytes: "; //这里输出的时候为什么先输出sb.ch[1]后输出sb.ch[0]感觉应该是0在前1在后啊?
disp_binary(sb.ch[1]);
cout << " ";
disp_binary(sb.ch[0]);
cout << "\n\n";

//交换字节
temp=sb.ch[0];
sb.ch[0]=sb.ch[1];
sb.ch[1]=temp;

cout << "Enxchanged bytes: ";
disp_binary(sb.ch[1]);
cout << " ";
disp_binary(sb.ch[0]);
cout << "\n\n";

return 0;
}

//输出字节中的位
void disp_binary(unsigned u)
{
register int t;

for(t=128; t>0; t=t/2)
if(u & t) cout << "1 ";
else cout << "0 ";
}

一共两个问题。在代码中都提了。请大家帮忙谢谢
...全文
74 点赞 收藏 4
写回复
4 条回复
txing 2005年03月24日
谢谢明白了
回复 点赞
shine51151 2005年03月23日
unsigned u 定义的U是无符号整型
一般默认不写的都是指整型
unsigned char u 才表示无符号字符型

规定就这么分配内存的

联合中一个整型变量和一个两元素的一维数组共用一段内存,sb.ch[0]占用sb.num 的低八位,

sb.ch[1]占用sb.num 的高八位。(可以按堆栈的观念来理解,即先为sb.ch[0]分配内存,

再为sb.ch[1]分配内存,好像sb.ch[0]被“挤”到了低八位去存储一样)
回复 点赞
llmsn 2005年03月23日
1.无符号整型.
回复 点赞
wuzhihong 2005年03月23日
1.unsigned int型
2.位向量最右是第0位,然后向左递增,输的时候当然倒过来
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告