为什么丢失了前半部分数据?

zansan 2008-02-07 08:00:43
今天实验memcpy功能.用了如下代码,对32位没问题,但用64位的"__int64"时结果就不和设想的.

#include <string.h>
#include <stdio.h>

const __int64 i512[8] =
{
0x6a09e667f3bcc908, 0xbb67ae8584caa73b,
0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1,
0x510e527fade682d1, 0x9b05688c2b3e6c1f,
0x1f83d9abfb41bd6b, 0x5be0cd19137e2179
};

main()
{
__int64 p[8];
memcpy(p, i512, 64);
for (int i=0;i<8;i++) {
printf(" %x ",p[i]);
}
return 0;
}

---------
输出结果是
f3bcc908 84caa73b fe94f82b 5f1d36f1 ade682d1 2b3e6c1f fb41bd6b 137e2179
什么原因?如何将所有数据拷贝到P里?
...全文
123 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin_style 2008-02-07
  • 打赏
  • 举报
回复
1楼正解。。
俺蹭分
cnzdgs 2008-02-07
  • 打赏
  • 举报
回复
printf("%I64x", p[i]);或者printf("%016I64x", p[i]);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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