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

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 ";
}

一共两个问题。在代码中都提了。请大家帮忙谢谢
...全文
147 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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位,然后向左递增,输的时候当然倒过来

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧