web-dev-qa-db-ja.com

GCCを使用したCのPrintf long long int?

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);
}
49
user963241

Windowsでmingwを使用している場合、gccはwin32ランタイムを使用します。この場合、printfには64ビット整数の%I64dが必要です。 (および%I64uは、符号化されていない64ビット整数の場合)

他のほとんどのプラットフォームでは、%lldを使用してlong longを印刷します。 (および、署名されていない場合は%llu)。これはC99で標準化されています。

gccには完全なCランタイムが付属していないため、実行しているプラ​​ットフォームによって異なります。したがって、一般的な場合は、gccに関係なく、特定のプラットフォームのドキュメントを参照する必要があります。

62
nos

コンパイラを更新してみてください。MinGWを搭載したWindows 7 Starter x86でGCC 4.7を使用していますが、C99とC11の両方で同じオプションを使用してコンパイルできます。

3
effeffe