次のようなものを使用して、64 ビットの符号なし整数を出力しようとしています。
uint64_t x = 0xFFFFFFFFFFFFFFFF;
printf("Value: %016llx \n", x);
そして、私はこれに応じて得ます:
0000000000000000lx
フォーマット文字列を %016lx に変更すると、間違った型を使用しているというコンパイル警告が表示され、下位 32 ビットのみが出力されます。
00000000FFFFFFFF
コンパイラ オプションに -std=c99 文字列がありますが、これは ll オプションを強制するはずですよね?
参考までに、これは Silicon Labs の Simplicity Studio IDE の最新バージョンに同梱されている arm-none-eabi-gcc コンパイラ (v4.7.3) です。