添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱跑步的口罩  ·  ios ...·  1 月前    · 
安静的油条  ·  Man page of INOTIFY·  3 周前    · 
月球上的乌冬面  ·  man inotify (7): ...·  3 周前    · 
重感情的面包  ·  Question - scroll ...·  7 月前    · 
高大的长颈鹿  ·  Esxi - 洛维花·  8 月前    · 
printf関数のサンプルです。第一引数は、文字列を意味する「%s」や整数を意味する「%d」などフォーマット指定子を含む文字列です。第二引数以降は、可変長引数となっており、フォーマット指定子に対応する値を渡します。 #include #include int main(void) { const char* name = "Yuki Kimoto"; int32_t age = 40; printf("My name is %s. Age is %d.\n", name, age); 出力結果です。 My name is Yuki Kimoto. Age is 40.

整数型のフォーマット

int32_t(符号あり32bit整数型)のフォーマット

int32_t型 (32bit符号あり整数型)をフォーマットするには「%d」を使用します。 「%d」は、正確にいうと、 int型 のフォーマットです。 ですので、もしint型の定義が16bitの処理系ですと、「%d」というフォーマットでは、 int32_t の値は、正しく出力されません。けれども、世の中のすべての処理系が、intを32bit以上で表現していると仮定すると、int32_t型の整数を「%d」でフォーマットするコードは正しくなります。 ためしに、int32_t型の最小値を、「%d」に渡してみましょう。あなたの環境では、いかがでしょうか? #include <stdio.h> #include <stdint.h> int main(void) { int32_t num = INT32_MIN; printf("%d\n", num); 出力結果です。 -2147483648 サイズが保証された整数型を、完全に正しくフォーマットする方法は、この後に解説します。こちらを使う方が正確ですが、記憶上で覚えておけないという、難点があります。

int16_t(符号あり16bit整数型)のフォーマット

int16_t (16bit符号あり整数型)をフォーマットするには「%d」を使用します。

int8_t(符号あり8bit整数型)のフォーマット

int8_t (8bit符号あり整数型)をフォーマットするには「%d」を使用します。

int64_t(符号あり64bit整数型)のフォーマット

int64_t (64bit符号あり整数型)をフォーマットするには、この後で説明する「PRId64」を使用します。 printf("%" PRId64 "\n", num); 「%ld」や「%lld」は移植性の警告が行われることがあるので、int64_tを出力する場合は、PRId64を使っておくと安心でしょう。

uint32_t(符号なし32bit整数型)のフォーマット

uint32_t (符号なし32bit整数型)のフォーマットには「%u」を使います。理由はint32_t型のフォーマットで解説したものと同じです。

uint8_t(符号なし8bit整数型)のフォーマット

uint8_t (符号なし8bit整数型)のフォーマットには「%u」を使います。

uint16_t(符号なし16bit整数型)のフォーマット

uint16_t (符号なし16bit整数型)のフォーマットには「%u」を使います。

uint64_t(符号なし64bit整数型)のフォーマット

uint64_t (符号なし64bit整数型)のフォーマットには、この後で説明する「PRIu64」を使用します。 printf("%" PRIu64 "\n", num); 「%lu」や「%llu」は移植性の警告が行われることがあるので、int64_tを出力する場合は、PRIu64を使っておくと安心でしょう。

サイズが保証された整数型のフォーマット

サイズが保証された整数型のフォーマットを正しく出力する方法があります。int32_t型の値を、正しくフォーマットしてみましょう。inttypes.hヘッダで定義されているPRId32マクロを使用します。 #include <stdio.h> #include <stdint.h> #include <inttypes.h> int main(void) { int32_t num = INT32_MIN; printf("%" PRId32 "\n", num); 「なんだこの書き方は...」と感じますね。C言語では、文字列リテラルは「"Foo" "Bar"」のように並べると、コンパイル時に結合されます。PRId32はマクロです。処理系の定義に応じて、適切なフォーマットの置換されます。たとえば「"%" "d" "\n"」のように置換されます。 サイズが保証された整数型のフォーマットのよく使うであろうものの一覧です。 PRId8int8_tのフォーマット PRId16int16_tのフォーマット PRId32int32_tのフォーマット PRId64int64_tのフォーマット PRIu8uint8_tのフォーマット PRIu16uint16_tのフォーマット PRIu32uint32_tのフォーマット PRIu64uint64_tのフォーマット

整数型のフォーマットの表示幅の指定

整数フォーマットで表示幅を指定してみましょう。

表示幅を指定して右寄せ

「%5d」のように「%」の後ろに「表示幅」を指定します。デフォルトでは、整数が右寄せです。足りない桁は空白で埋められます。 # 整数の表示幅を指定する fprintfの整数フォーマットで、表示幅を5桁に指定するサンプルです。5桁の右寄せになります。 #include <stdio.h> #include <stdint.h> int main(void) { int32_t num = 123; // 表示幅を5桁に指定 右寄せ printf("foo,%5d,bar\n", num); 出力結果です。整数が5桁の右寄せで、出力されています。 foo, 123,bar

表示幅を指定して左寄せ

表示幅を指定し左寄せするには「%-5d」のように、表示幅の前にマイナスをつけます。 // 表示幅を指定し左寄せ 表示幅を指定し左寄せで表示するサンプルです。 #include <stdio.h> #include <stdint.h> int main(void) { int32_t num = 123; // 桁数を5桁に指定 左寄せ printf("foo,%-5d,bar\n", num); 出力結果です。 foo,123 ,bar

表示幅を指定して0埋め

表示幅を指定し左寄せするには「%05d」のように、表示幅の前に0をつけます。 // 表示幅を指定し左寄せ 表示幅を指定し左寄せで表示するサンプルです。 #include <stdio.h> #include <stdint.h> int main(void) { int32_t num = 123; // 桁数を5桁に指定 - 0埋め printf("foo,%05d,bar\n", num); 出力結果です。 foo,00123,bar

整数型を16進数で表示

整数型を16進数で表示するには「%x」または「%X」を使用します。「%x」の場合は「a~z」で、「%X」の場合は「A~Z」を使って出力されます。 #include <stdio.h> #include <stdint.h> int main(void) { int32_t num = 0x34AB; printf("%x\n", num); printf("%X\n", num);

浮動小数点型のフォーマット

printf関数の浮動小数点型のフォーマットの解説です。

浮動小数点型のフォーマット

printf関数の浮動小数点型のフォーマットは「%f」です。 float型 double型 も両方「%f」で大丈夫です。 printf関数で浮動小数点を出力するサンプルです。 #include <stdio.h> #include <stdint.h> int main(void) { double num = 123.56; printf("%f\n", num); 出力結果です。 123.560000

浮動小数の小数点以下の桁数を指定する

浮動小数の小数点以下の桁数を指定するには「%.2f」のように書きます。 printf関数で浮動小数点を小数点以下2桁で出力するサンプルです。 #include <stdio.h> #include <stdint.h> int main(void) { double num = 123.56; // 小数点以下の桁数を2桁に指定 printf("%.2f\n", num); 出力結果です。 123.56

浮動小数点をいい感じに表示する

浮動小数点をいい感じに表示するには「%g」を使用します。指数表記で桁数が多い場合は、自動的に指数表記にしてくれます。 #include <stdio.h> #include <stdint.h> int main(void) { double num1 = 123.56; double num2 = 2.56e40; // 浮動小数点をいい感じに表示 printf("%g\n", num1); printf("%g\n", num2); 出力結果です。 123.56 2.56e+40

文字のフォーマット

printf関数で文字をフォーマットするには「%c」を使います。 printf関数で文字をフォーマットするサンプルです。 文字リテラル 「'a'」で記述した値は、 char型 でASCIIコードとして保持しています。これを、「%c」で文字として出力します。 #include <stdio.h> int main(void) { char ch = 'a'; // 文字列を出力 printf("%c\n", ch); 出力結果です。

文字列のフォーマット

printf関数で 文字列 をフォーマットするには「%s」を使います。 printf関数で文字列をフォーマットするサンプルです。 #include <stdio.h> int main(void) { const char* message = "Hello"; // 文字列を出力 printf("%s\n", message); 出力結果です。 Hello

ポインタのフォーマット

printf関数で ポインタ をフォーマットするには「%p」を使います。ポインタの値(アドレス)が得られます。 printf関数でポインタをフォーマットするサンプルです。 #include <stdio.h> int main(void) { const char* message = "Hello"; // ポインタを出力 printf("%p\n", message); 私の環境での出力結果です。ポインタの値(アドレス)が出力されています。 0x4005c8