GCCを使用してC99でlong long int
およびunsigned long long int
を印刷するにはどうすればよいですか?
%lld
の使用を提案する他の投稿を検索しましたが、次の警告が表示されます。
警告#1:形式[-Wformat]の不明な変換タイプ文字 'l' |
warning#2:形式[-Wformat-extra-args] |の引数が多すぎます
次の試みの場合:
#include <stdio.h>
int main()
{
long long int x = 0;
unsigned long long int y = 0;
printf("%lld\n", x);
printf("%llu\n", y);
}
Windowsでmingwを使用している場合、gccはwin32ランタイムを使用します。この場合、printfには64ビット整数の%I64d
が必要です。 (および%I64u
は、符号化されていない64ビット整数の場合)
他のほとんどのプラットフォームでは、%lld
を使用してlong longを印刷します。 (および、署名されていない場合は%llu
)。これはC99で標準化されています。
gccには完全なCランタイムが付属していないため、実行しているプラットフォームによって異なります。したがって、一般的な場合は、gccに関係なく、特定のプラットフォームのドキュメントを参照する必要があります。
コンパイラを更新してみてください。MinGWを搭載したWindows 7 Starter x86でGCC 4.7を使用していますが、C99とC11の両方で同じオプションを使用してコンパイルできます。