0

在 C 中为 unsigned long 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

4 回答 4

4

unsigned long long用打印%llu

于 2012-10-09T07:26:55.500 回答
3

如果要打印 unsigned long long,请为 printf 使用 llu 或 Lu 格式说明符。格式说明符取决于编译器。

于 2012-10-09T07:26:31.707 回答
3

分配正确发生。但是,该程序未正确显示该值。

printf("%Lu\n\n",x);

或者

printf("%llu\n\n",x);

甚至可能

printf("%LLu\n\n",x);

取决于编译器和特定的运行时库。

于 2012-10-09T07:27:44.283 回答
2

您需要更改printfs 才能正确打印。

#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;
}
于 2012-10-09T07:29:29.527 回答