C语言格式输出unsigned long long 类型%llu %llX输出为什么错(ubuntu10.04 gcc4.4.3)?详细原因是什么?

#include <stdio.h>
int main(int argc, const char *argv[])
{
unsiged long long ll_var=0x123456789abcdef0;
printf("ll_var=0x%llX ll_var=%llu",ll_var,ll_var);//错误
return 0;

执行结果:ll_var=0x9abcdef012345678 ll_var=11150031900141442680
根据结果来看,应该是数据字节序存储问题,求合理解释。

unsiged long long ll_var=0x123456789abcdef0;

这样定义是错误,应该是
unsiged long long ll_var=0x123456789abcdef0ULL;
末尾不加ULL的常量数字被认为是int(32bit)。追问

貌似加不加ULL不影响定义啊,我试过了也可以的,上面的问题源代码找不到了,无法细看那里错了,现在可以打印正常结果。谢了!

温馨提示:答案为网友推荐,仅供参考