一个奇葩的问题,两个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;
求解啊!

分不多抱歉
...全文
265 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
自顶,求解!实在想不出有什么错误的可能。
  • 打赏
  • 举报
回复
相关推荐
发帖
Linux/Unix社区
加入

2.1w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
帖子事件
创建了帖子
2013-01-22 05:10
社区公告
暂无公告