免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: jeung
打印 上一主题 下一主题

[C] 关于联合体的一道笔试题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-10-14 00:11 |只看该作者
回复 30# lwrsmy


    我机器运行出来的266是小端的结果?

论坛徽章:
0
32 [报告]
发表于 2011-10-19 22:02 |只看该作者
回复 27# melodyzm
是的,在solaris SPACK上的结果是 167837696
在cygwin上的结果是266
在ubuntu8.04上是266

论坛徽章:
0
33 [报告]
发表于 2011-10-20 11:00 |只看该作者
本帖最后由 wangzhen11aaa 于 2011-10-20 11:03 编辑

Reading symbols from /home/wangzhen/c/union...done.
(gdb) l
2        *
3       */
4       #include<stdio.h>
5       union{
6               int i;
7               char a[2];
8       }x;
9       int main()
10      {
11              x.a[0] = 10;
(gdb) b 5
Breakpoint 1 at 0x80483b5: file union.c, line 5.
(gdb) run
Starting program: /home/wangzhen/c/union

Breakpoint 1, main () at union.c:11
11              x.a[0] = 10;
(gdb) display &x
1: &x = (union {...} *) 0x804963c
(gdb) display &x.i
2: &x.i = (int *) 0x804963c
(gdb) display &x.a
3: &x.a = (char (*)[2]) 0x804963c
(gdb) display &x.a[1]
4: &x.a[1] = 0x804963d ""
(gdb) display &x.a[0]
5: &x.a[0] = 0x804963c ""
(gdb) s
12              x.a[1] = 1;
5: &x.a[0] = 0x804963c "\n"
4: &x.a[1] = 0x804963d ""
3: &x.a = (char (*)[2]) 0x804963c
2: &x.i = (int *) 0x804963c
1: &x = (union {...} *) 0x804963c
(gdb) display x.a[0]
6: x.a[0] = 10 '\n'
(gdb) display x.a[1]
7: x.a[1] = 0 '\000'
(gdb) s
13              printf("%d\n",x.i);
7: x.a[1] = 1 '\001'
6: x.a[0] = 10 '\n'
5: &x.a[0] = 0x804963c "\n\001"
4: &x.a[1] = 0x804963d "\001"
3: &x.a = (char (*)[2]) 0x804963c
2: &x.i = (int *) 0x804963c
1: &x = (union {...} *) 0x804963c
(gdb) display x
8: x = {i = 266, a = "\n\001"}
(gdb) display a[2]
No symbol "a" in current context.
(gdb) display x.a[2]
9: x.a[2] = 0 '\000'
(gdb) display x.a[3]
10: x.a[3] = 0 '\000'
(gdb) display x.i
11: x.i = 266
(gdb) display x.i
12: x.i = 266
(gdb) display &x.a[3]
13: &x.a[3] = 0x804963f ""
(gdb) display &x.a[2]
14: &x.a[2] = 0x804963e ""
(gdb) display &x.a[2]
14: &x.a[2] = 0x804963e ""
(gdb) display x.a[2]
15: x.a[2] = 0 '\000'
(gdb) display x.a[3]
16: x.a[3] = 0 '\000'


7: x.a[1] = 1 '\001'
6: x.a[0] = 10 '\n'

按照小端来算:(看地址内的内容
应该是0x10a

论坛徽章:
0
34 [报告]
发表于 2016-01-22 17:28 |只看该作者
不要在这样找笔试题了,一次就这么几个,还没过瘾就没有了,去安装个《笔试宝典》收录了网上90%的笔试题bishi.jisupeixun.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP