无法复制价值?是逻辑错误吗?或打印错误?

时间:2016-12-15 09:04:06

标签: c

嗨,我有以下简单程序

#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

所以有人能指出我的问题是什么吗?

1 个答案:

答案 0 :(得分:3)

副本没问题,你必须使用long long unsigned打印

printf("0x%llx", (unsigned long long) getValue);