嗨,我有以下简单程序
#include <stdio.h>
#include <string.h>
typedef unsigned long long uint64;
void getvalue(uint64 *getValue)
{
unsigned char arr[8] = {0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xED, 0xCA, 0x01};
memcpy(getValue, arr, sizeof(uint64));
}
void main()
{
uint64 getValue;
getvalue(&getValue);
printf("value :0x%08x and sizeof(uint64) = %d", getValue, sizeof(uint64));
}
这个程序用8字节变量复制内容,但是当我运行它时,我看到下面的输出显示只复制了4个字节。
value :0x3412cdab and sizeof(uint64) = 8
所以有人能指出我的问题是什么吗?
答案 0 :(得分:3)
副本没问题,你必须使用long long unsigned打印
printf("0x%llx", (unsigned long long) getValue);