免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 3307 | 回复: 21
打印 上一主题 下一主题

将long*传给int*,为什么有这样的现象 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-11 17:29 |只看该作者 |正序浏览
在我的机器上,long为8个字节,int为4个字节
int main()
{
   long l;
   fun(&l);
   printf("%d,%ld\n",l,l);
}
int fun(int* l)
{
   *l=4;
}

打印出来的值是:  0,17179869184
why?想不通中......

论坛徽章:
0
22 [报告]
发表于 2005-07-18 16:26 |只看该作者

将long*传给int*,为什么有这样的现象

靠,简单的问题偏偏要把人弄迷糊。
看看就知道了:
0X0000000400000000=0D17179869184
看看你把4放到什么地方了?

论坛徽章:
0
21 [报告]
发表于 2005-07-18 16:17 |只看该作者

将long*传给int*,为什么有这样的现象

传的低地址!即0x0000,
所以4赋给前四个字节0x0000-0x0004,所以1717……那个值是对的!
至于0,
用%d打印长整形的数,无疑要打印低4个字节(0x0005-0x000的值!高位被截断!
note:这里高位放在低地址,低位放在高地址!

论坛徽章:
0
20 [报告]
发表于 2005-07-16 21:44 |只看该作者

将long*传给int*,为什么有这样的现象

原帖由 "albcamus" 发表:
找到了,原来作者维护了一个网站,谢谢Solaris12兄
感兴趣的朋友看过来:
http://www.solarisinternals.com


作者正在写第二版,马上要出版了,新版里除了会更新过时的东东,
还有就是引入了Solaris 10的dtrace来帮助理解。

论坛徽章:
0
19 [报告]
发表于 2005-07-14 09:44 |只看该作者

将long*传给int*,为什么有这样的现象

找到了,原来作者维护了一个网站,谢谢Solaris12兄
感兴趣的朋友看过来:
http://www.solarisinternals.com

论坛徽章:
0
18 [报告]
发表于 2005-07-14 09:34 |只看该作者

将long*传给int*,为什么有这样的现象

原帖由 "Solaris12" 发表:

是说solaris internel吗?
英文班可以在google上搜索,关键字是solarisinternals.pdf


《Solaris内核结构》的英文名字叫:Solaris Internals:the Core Architecture,作者是 Richard McDougall & Jim Mauro。
在google上我找过,用的关键字差不多,找出一份PDF文档,虽然也是这二位的,却是叫做:Solaris Internals:Kernel Architecture & Implementation,感觉很粗糙,应该是PPT或类似格式转来的。

ChinaPub上我看到有人对照着英文版勘误,可见应该是能找到的,就不知道现在还有没有  

论坛徽章:
0
17 [报告]
发表于 2005-07-13 21:14 |只看该作者

将long*传给int*,为什么有这样的现象

原帖由 "albcamus" 发表:


Solaris12兄,弟最近要“参悟”Solaris的内核了(工作需要,不得不然呵呵),那本经典的《Solaris内核结构》中文版已经找不到了,能问您求个英文版吗?若有,还请援手啊   


是说solaris internel吗?

英文班可以在google上搜索,关键字是solarisinternals.pdf

论坛徽章:
0
16 [报告]
发表于 2005-07-13 16:05 |只看该作者

将long*传给int*,为什么有这样的现象

原帖由 "aero" 发表:

呵呵,工作越干越好,羡慕啊。在清茶碰到一个,看签名,还以为是你的马甲。


汗~苦水自个儿知道哇   
是该努力啦

P.S.清茶前阵子我狂水一番,培养了无数fans

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
15 [报告]
发表于 2005-07-13 15:19 |只看该作者

将long*传给int*,为什么有这样的现象

原帖由 "albcamus" 发表:


Solaris12兄,弟最近要“参悟”Solaris的内核了(工作需要,不得不然呵呵),那本经典的《Solaris内核结构》中文版已经找不到了,能问您求个英文版吗?若有,还请援手啊   


呵呵,工作越干越好,羡慕啊。在清茶碰到一个,看签名,还以为是你的马甲。

论坛徽章:
0
14 [报告]
发表于 2005-07-13 14:51 |只看该作者

将long*传给int*,为什么有这样的现象

原帖由 "Solaris12" 发表:

很多32位程序移植到64位机器上,会发生类似问题。


Solaris12兄,弟最近要“参悟”Solaris的内核了(工作需要,不得不然呵呵),那本经典的《Solaris内核结构》中文版已经找不到了,能问您求个英文版吗?若有,还请援手啊   
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP