一个奇葩的问题,两个LONG LONG型相除等于0

yueshengxiao 2013-01-22 05:10:29
linux底下的程序,没办法把代码拷过来,故简单说明下情况。
入参:
unsigned long long *pTime;
unsigned long long *pInvite;
*pTime=0x4E2FBCD6;
*pInvite=0x00000001;
做完下面操作,出现问题:
*pTime=(*pTime)/(*pInvite);
接着打印*pTime就是0x00000000;

我尝试定义变量
unsigned long long Time ,Invite;
Time =*pTime;
Invite=*pInvite;
打印出Time和Invite的值都分别与*pTime和*pInvite一致。
然后Time=Time/Invite;
打印Time依然是0x00000000;
求解啊!

分不多抱歉
...全文
390 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yueshengxiao 2013-02-22
  • 打赏
  • 举报
回复
引用 3 楼 carmili 的回复:
首先回答第一个例子的问题 unsigned long long *pTime; unsigned long long *pInvite;//两个指针没有指向的内存地址,为空指针, *pTime=0x4E2FBCD6; *pInvite=0x00000001;//空的指针,赋值没意义。 修改方法: 1,定义两个变量 unsigned long long a,b……
地址的问题,这个是作为入参,在上层就已经定义的,我在这里这么写只是为了表达这个变量的类型。 这个问题错误的地方是,其实这个得到的结果0x000000,并没有错。而是我打印的通说%08x打印的,本身long long 是64位8个Byte,而通过%08x打印出来的只能是前面4个字节,前面四个字节本来就是0。 抱歉这么久才回复!
J_King 2013-01-22
  • 打赏
  • 举报
回复
补充,linux底层应该用kmalloc来分配内存空间。
J_King 2013-01-22
  • 打赏
  • 举报
回复
首先回答第一个例子的问题 unsigned long long *pTime; unsigned long long *pInvite;//两个指针没有指向的内存地址,为空指针, *pTime=0x4E2FBCD6; *pInvite=0x00000001;//空的指针,赋值没意义。 修改方法: 1,定义两个变量 unsigned long long a,b; unsigned long long *pTime=&a; unsigned long long *pInvite=&b; 2,分配内存 unsigned long long *pTime; unsigned long long *pInvite; pTime=(unsigned long long *)malloc(sizeof( *pTime)); pInvite=(unsigned long long *)malloc(sizeof( *pInvite));
yueshengxiao 2013-01-22
  • 打赏
  • 举报
回复
@zhao4zhong1
yueshengxiao 2013-01-22
  • 打赏
  • 举报
回复
自顶,求解!实在想不出有什么错误的可能。

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧