1. ホーム
  2. c

[解決済み】C言語でint64_t型を表示する方法

2022-02-07 17:39:06

質問

C99規格では、int64_tのようなバイトサイズの整数型があります。Windowsの %I64d 形式は、現在(または符号なし %I64u )のようになります。

#include <stdio.h>
#include <stdint.h>
int64_t my_int = 999999999999999999;
printf("This is my_int: %I64d\n", my_int);

というコンパイラの警告が表示されます。

warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’

で試してみました。

printf("This is my_int: %lld\n", my_int); // long long decimal

しかし、同じ警告が表示されます。私はこのコンパイラーを使っています。

~/dev/c$ cc -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5664)

変数my_intを警告を出さずに表示するには、どのようなフォーマットを使用すればよいですか?

どのように解決するのですか?

対象 int64_t の型があります。

#include <inttypes.h>
int64_t t;
printf("%" PRId64 "\n", t);

について uint64_t の型があります。

#include <inttypes.h>
uint64_t t;
printf("%" PRIu64 "\n", t);

を使用することもできます。 PRIx64 を使うと16進数で表示されます。

cppreference.comに全リストがあります。 を含むすべてのタイプで利用可能なマクロの intptr_t ( PRIxPTR ). のように、scanf用のマクロが別に用意されています。 SCNd64 .


PRIu16の典型的な定義は次のとおりです。 "hu" そのため、コンパイル時に暗黙のうちに文字列定数の連結が行われます。

コードを完全にポータブルにするためには PRId32 などを印刷することができます。 int32_t 、および "%d" などを印刷することができます。 int .