在C中为无符号long long赋值

时间:2012-10-09 07:24:30

标签: c long-integer

在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位变量被忽略。有人可以告诉我如何正确地做到这一点。

4 个答案:

答案 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;
}