免费注册 查看新帖 |

Chinaunix

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

[C] 让人疑惑的C笔试题,求高人解答 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2011-04-10 12:36 |只看该作者
回复 13# captivated


    同意!

论坛徽章:
0
42 [报告]
发表于 2011-04-10 17:22 |只看该作者
全楼都看完了,不是很明白。
个人解理:char p[4] = {0x01, 00, 0x01, 00}  变为10进制是不是char p[4] = {1, 0, 1, 0}?
然后(int *)p说明P是个整型指针,而*(int *)p是取指针的起始地址;所以答案是1

半路出家的(而且很久不学编程了),说不对的还请高手们指教!!

论坛徽章:
0
43 [报告]
发表于 2011-04-10 17:42 |只看该作者
回复 39# linuxsmart


    你这个更幽默

论坛徽章:
0
44 [报告]
发表于 2011-04-11 10:32 |只看该作者
全楼都看完了,不是很明白。
个人解理:char p[4] = {0x01, 00, 0x01, 00}  变为10进制是不是char p[4]  ...
yangysm 发表于 2011-04-10 17:22



    哥们儿,你太异想天开了!!!!!!呵呵!!!!!!!!

论坛徽章:
0
45 [报告]
发表于 2011-04-11 12:31 |只看该作者
看情况,在大端,并且int占两个字节情况下,答案成立,小端4字节情况下为“65553”:ctungsten@ctungsten:~$ ./a 65553 4
0x12345678,内存0x1000,0x1001,0x1002,0x1003.大端:0x78,0x56,0x34,0x12,小端反之

论坛徽章:
0
46 [报告]
发表于 2011-04-11 12:51 |只看该作者
这样的用法是危险的。
可能会造成非对齐访问。
在arm上这样非对齐访问,取到的值是不完整的。

论坛徽章:
0
47 [报告]
发表于 2011-04-11 15:20 |只看该作者
本帖最后由 龙客yang 于 2011-04-11 20:43 编辑

这个答案是错的,考试一般都考x86,小端的话,就是int 的0x00010001呀

论坛徽章:
0
48 [报告]
发表于 2011-04-12 07:52 |只看该作者
同 cobras
如果是小端且sizeof(int) == 2,则为1

论坛徽章:
0
49 [报告]
发表于 2011-04-12 11:13 |只看该作者
这样的用法是危险的。
可能会造成非对齐访问。
在arm上这样非对齐访问,取到的值是不完整的。
guoruimin 发表于 2011-04-11 12:51



   


同意!!!!!!

论坛徽章:
0
50 [报告]
发表于 2011-04-12 12:53 |只看该作者
回复 13# captivated


    同意。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP