在C中为无符号长long变量赋值时,未正确赋值变量值。代码是:
#include <stdio.h>
int main()
{
unsigned long long x;
printf("%d\n\n",sizeof(x));
x=0xAAAAAAAAAAAAAAAAULL;
printf("%u\n\n",x);
printf("%ld\n\n",x);
return 0;
}
最右边的32位变量被忽略。有人可以告诉我如何正确地做到这一点。
答案 0 :(得分:4)
使用unsigned long long
打印%llu
。
答案 1 :(得分:3)
如果要打印无符号长long,请对printf使用llu或Lu格式说明符。格式说明符取决于编译器。
答案 2 :(得分:3)
分配正确进行。但是,程序未正确显示值。
printf("%Lu\n\n",x);
或
printf("%llu\n\n",x);
或者甚至
printf("%LLu\n\n",x);
取决于编译器和特定的运行时库。
答案 3 :(得分:2)
您需要更改printf
以正确打印。
#include <stdio.h>
int main()
{
unsigned long long x;
printf("%d\n\n",sizeof(x));
x=0xAAAAAAAAAAAAAAAAULL;
printf("%u\n\n",x); // not work
printf("%llu\n\n",x); // works
printf("%016llx\n\n",x); // bonus check
return 0;
}