问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

unsigned char a[4] = {0, 0, 0, 1};int b = *((int*)a); 这样执行完毕后,b的值是多少?

发布网友 发布时间:2022-06-28 22:59

我来回答

4个回答

热心网友 时间:2023-10-11 00:30

一、首先我们来分析一下为什么是16777216:int b = *((int*)a);的执行过程,为此另外定义一个变量:
int *p;
p = (int*)a;
实际上此时p为一个指向整数的指针,其地址与a相同。
此时: b = *((int*)a); 与 b= *p;是相同的值。
一个整数是4个字节,而unsigned char a[4]也是四个字节,字符串存放顺序是从左至右依次存放,在内存中按字节从地到高,依次是:0 0 0 1
整数也是4个字节,也是从低到高存放,恰好与字符数组占用的地址和大小完全相同,从低到高也是:0 0 0 1,对应的16进制整数就是0X01000000,也就是十进制的16777216。

二、字符数组转成int的方法
有两种转换方法,其一即认为先出现的是低位,就是上述分析的情况;其二就是先出现的是高位,那么则要重新计算,从最后一个字符开始循环执行:
int sum = 0;
for(int i=4,i>0;i--)sum = sum*10+a[i-1];

热心网友 时间:2023-10-11 00:31

整型变量四个字节,在微机中是低位字节在前,高位字节在后,你把最高一字节置成1,结果当然就是一个老大的数啦
你想要1得这么定:unsigned char a[4] = {1, 0, 0, 0};
而后 int b = *((int*)a); 此时 b==1
在8位系统的单片机中,整型变量是高字节在前的,单片机用的是C51,你用C/C++就表示不是8位的单片机,而无论16位32位还是64位,那个short,int,long等整型都是低位字节在前高位字节在后的

热心网友 时间:2023-10-11 00:31

一个int是4个字节,一个char是一个字节
int b = *((int*)a); //这个赋值就是把数组a的地址当作一个int的地址,那么这个数组4个字节的内容就形成了一个int:
0x00 0x00 0x00 0x01,intel内存体系是低位在前那这个值就是0x01000000,换算成10进制就是16777216

你说的怎么才能从unsigned char[4]正确的转换为一个int的值,这个说的很模糊,按你的预期是要转换成什么值呢

热心网友 时间:2023-10-11 00:32

转换一个int 型的话就 (int)a[3]就等于1了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女方早婚早育要离婚未满月孩子该怎么才能判给 家庭暴力,孩子未满月,孩子母亲要求离婚 孩子未满月是否可以离婚 孩子未满月可不可以离婚 新生儿未满月是否可离婚 固原斜视眼有哪些表现? 如何看待儿童斜视问题?固原 固原斜视儿童有必要做手术吗 HOJOJODO皇家金盾S1智能电子锁-详细介绍 皇家金盾智能锁怎么改密码 怎么在matlab中把矩阵里面的数据生成等值线图.如矩阵[0 1 0 4;2 0 4 0;0 4 3 0;2 0 1 4] 在Matlab中用(4,1,2,3)表示矩阵[0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0]的程序怎么写? 用1、2、3、4、0、0组成六位数,只读一个0的( ),( ),读2个0的( );1个0的也不读的( ),最大的六位 数组矩阵[1 2 0 4 0 0;2 1 2 3 5 0]如何从每一行中随机选取随机非零数 怎么更换绑定手机号? 中国人民解放军陆军炮兵防空兵学院联系方式? 炮校是什么意思? 陆军炮兵防空兵学院是不是一本院校 安徽省四百六左右的警校或军校 订了飞机票怎么退 QQ上买的飞机票怎么退票 QQ钱包买的飞机票怎么退? 赤壁之战论文1500字 古代断了自己后路的战役 黑胡子和马尔科的了断之战动画片里没有演吗 和黑人在一起 为什么会遭受那么多白眼呢 改什么好听好记微信怎么改好听 电动车雨衣怎么脱 请问一下,这个图是哪个动漫里的? 有什么适合8岁女孩看的动画片? 3.定义一个函数,功能是删除整型数组中指定的数。如:数组中的数为:1、4、8、 9、7 、7、9、0 要删除的数 在JAVA中,把一维数组b={1,0,2,0,5,0,4,0,4,0}中的去掉形成一个新的数组c? 手机被锁了但是又不能usb调试应该怎么办?红米 7米h型钢400*200,能承重多少? 7米跨度的钢结构彩钢夹芯板屋顶,立柱、桁架、檩条分别用多大?立柱间距是多少? 一个长7米高1.8米厚0.7米用50角钢做龙骨外面用木板和铝塑板做的门头要多少钱?急求价格谢谢 手机上卖什么吃的 这是什么花?商家叫开心果,我查不到关于它的资料。在此请教行家谢谢! 黄花照波状态不好,怎么办? 温州有几个第一~急! 如何在民生银行开户? 如果女生问你她就是这样的人你要怎么办? 除了交强险,其他车险有必要买吗? 怎样知道纵联保护是闭锁式还是允许式 如何才能知道小孩是否被遗传到糖尿病 被分手后,哪些明星艺人不哀求不卑微? 小米电视如何设置不看短视频? 如何使用伊诺二胡专用调音器校音器et-05e 二胡用 十二平均律 excel中在某一列查找一个我规定的数值后,返回显示对应列表的位置 excel如何自动查找到表中的数,输出该数值的行列呢,求指导