找回密码
 立即注册
查看: 65|回复: 1

关于小端系统的面试题

[复制链接]

10

主题

11

回帖

64

积分

注册会员

积分
64
发表于 2023-2-2 17:07:20 | 显示全部楼层 |阅读模式



关于小端系统的面试题
回复

使用道具 举报

10

主题

11

回帖

64

积分

注册会员

积分
64
 楼主| 发表于 2023-2-2 17:07:51 | 显示全部楼层
union {int a; long b; unsigned char c; } m;
由于m是个联合结构
所以整个结构在内存中占一个long这么大的空间(在vc6.0中是32位二进制,现在应该是占64位),同时三个元素a,b,c共用这段内存
好了,
由于
m.b = 0x12345678;
所以,赋值后这段内存空间内的值就为:
0001 0010 0011 0100 0101 0110 0111 1000 (低32位,)
好了
unsigned char c;
c是个unsigned char类型
所以只取低8位二进制位,转成无符号char类型的数:
0111 1000
这8位二进制数,转成10进制数,就是120
所以
printf("%d\n", m.c);
以10进制整数的形式输出m.c就是120
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|粤嵌技术交流空间

GMT+8, 2025-7-8 02:51 , Processed in 0.694993 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表