質問

printf 関数は引数をタイプなど %d または %i のための signed int.しかし、などを満たすものがありませんが、 long 値とします。

役に立ちましたか?

解決

を入れて l (文字を小文字に変換L)の直前の指定子.

unsigned long n;
long m;

printf("%lu %ld", n, m);

他のヒント

と思うん:

unsigned long n;
printf("%lu", n);   // unsigned long

または

long n;
printf("%ld", n);   // signed long

ほとんどのプラットフォーム longint 同じサイズ(32-bit).まだまだ、ない独自のフォーマット指定子:

long n;
unsigned long un;
printf("%ld", n); // signed
printf("%lu", un); // unsigned

64ビット思います long long:

long long n;
unsigned long long un;
printf("%lld", n); // signed
printf("%llu", un); // unsigned

あ、もちろん、異なるWindows:

printf("%l64d", n); // signed
printf("%l64u", un); // unsigned

頻繁に、私の印刷64ビット値を見たいのである印刷には六角レンチ(通常は数字が大きなポインタまたはビット分野).

unsigned long long n;
printf("0x%016llX", n); // "0x" followed by "0-padded", "16 char wide", "long long", "HEX with 0-9A-F"

のまま印刷:

0x00000000DEADBEEF

ちなみに、"長"ではないからという(主流x64)."int"のプラットフォームのデフォルトはintのサイズは32ビット."長い"は通常と同じサイズです。しかし、異なる移植性の意味論に古いプラットフォーム(近代組込み盤!)."long"は64ビット数を、通常の人にも使いかを知っていたこと編集のx-台の携帯のコードです。もできたし、とても満足していることができるのだろうろしてマクロではなくの意味を意味するタイプ(例えばuint64_t).

char c;       // 8 bits
short s;      // 16 bits
int i;        // 32 bits (on modern platforms)
long l;       // 32 bits
long long ll; // 64 bits 

日本,"int"は16ビット.んだとは思いる64ビットがないに狂った携帯性ます。もちろん、これは簡略化の難解と歴史の真実見 wiki:整数

による場合を参照している符号なしlongをフォーマット文字 "%lu".いつ署長のフォーマット文字 "%ld".

場所を探して印刷 unsigned long long ていたので使用します:

unsigned long long n;
printf("%llu", n);

その他のすべての組み合わせ、ダウンロードいただけま軒のテーブル のprintfマニュアル, に、そしてカラムラベルのいまを印刷しようとするととしてい printf("%llu", n) ます。

と思うこの問いに答えるために隣はショッピングセンターで、歩いかにコンパイラの名前、バージョンを使用していることや、プラットフォーム(CPUの種類、OSなど) この作成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top