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

printf正しく印刷するには、sを変更する必要があります。

#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 に答える