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

c语言题目,请问为什么m.c是78,求详细解答

发布网友 发布时间:2022-04-29 07:25

我来回答

3个回答

热心网友 时间:2022-06-21 03:08

这说明你用的平台是所谓“小端机”,即一个整数是从变量地址的低字节形如依次存放的。在本例中给联合体变量m只根本了4个字节(最长的long int类型),在用m.b=0x12345678;为m.b赋值时,内存中从&m.b开始的由低到高的地址中依次存放0x78、0x56、0x34、0x12,而m.c只有一个字节,这个字节就是&m.b,所以输出是78。如果你用的平台是所谓“大端机”,输出就应该是12了……

热心网友 时间:2022-06-21 03:09

这需要了解union的内存分布是怎么样的。
union是所有字段共用一段内存空间,其大小等于最大的那个字段的大小,且所有字段的起始地址一样。
在VC++中,你题中的这个m的大小是4字节,因为最大的字段是a和b都是占用4个字节。由于VC++中是小端序,故其实b的第一个字节是0x78,由于c与a、b共用内存空间,且c与a、b的起始内存地址又一样,所以c其实就是b的第一个字节,也就是0x78。
其实这道题中,在VC环境下:
m.a == 0x12345678
m.b == 0x12345678
m.c == 0x78

如果是在64位的Linux下,情况会有所不同,因为64位Linux下long类型是8个字节的,但a、b、c的值还是和上面说的一样。

热心网友 时间:2022-06-21 03:09

在C Programming Language 一书中对于联合体是这么描述的:
1)联合体是一个结构;
2)它的所有成员相对于基地址的偏移量都为0;
3)此结构空间要大到足够容纳最"宽"的成员;
4)其对齐方式要适合其中所有的成员

在32 位的系统上
int 咔出来的内存大小是4 个byte;
long 咔出来的内存大小是4 个byte;
char 咔出来的内存大小是1 个byte。

也就是说联合体的成员占用共同的一段内存。所以联合体m的大小只有4字节
sizeof(union m) = 4;而m.c 只占低地址的一个字节所以是 78
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 在建筑工程制图中m和c分别表示什么? 缩略语M.C.全称 《了不起的M.C.希金斯》讲的是个什么故事? M和C在建筑工程中代表什么,哪种单位 蹲式厕所便盆出现下裂缝怎么办 谁是M.C.麦卡锡? m.c是什么职位 厕所蹲坑的掉了一块会漏水吗 i386文件夹下载后怎么安装 M.C是什么意思啊 下载好的文件,怎么安装啊 M.C是什么意思? 怎样删除金立手机云端备份与恢复 蹲便器出现了裂纹的相关问题 电脑下载软件的文件怎么安装 这是咋了?金立手机忘记密码要恢复出厂设置。按照步骤的变成这样了。 下载PS以后是一个文件夹,怎么安装啊? 蹲便器上的裂缝,会不会影响它的质量? 怎样下载文件和安装 家里的蹲便器槽内出现了细长的裂纹,这个怎么办?不想换的话,有修补的办法吗??修补后会不会漏水? M/C是什么意思? 洗手间标志牌上的m.c/w.c的含义是什么 M和C在园林工程中代表什么意思 m.c the max的介绍 宝马320li加装哈曼卡顿音响要多少钱 请问缩写M.M.C什么意思 加装3系哈曼卡顿音响多少钱 色卡上M C是什么意思 宝马320li时尚型选装哈曼卡顿要多少钱 怎么才能加到女生? 宝马3系想改套音响,请问5000左右,改什么牌子的,性价比高 如何要到女生啊? 宝马730li加装哈曼卡顿多少钱 宝马3gt加装哈曼卡顿音响得花多少钱 怎么要一个女孩微信 怎么去主动要女生的微信? 宝马五系19款改装哈曼卡顿音响多少钱? 宝马3系有必要加装harman音响吗? 怎么样跟美女要微信 老人没有智能手机出行怎么用健康码