0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プログラミング能力認定試験3級レベルのフォーマット指定子

Posted at

はじめに

こんにちは 高専一年生のメカテック部部員です
今回はプログラミング能力認定試験3級を受験したときの
新しい知識、フォーマット指定子を共有します

フォーマット指定子集(printfに使ったとき)

%d

これは符号付きの整数に変換するフォーマット指定子です

printf時のモディファイア:
与えられた値を表示するとき、少なくとも何マス確保するかを表します
最初の文字に0が入ると空白に0が埋まります
※△は空白スペースを表す

printf("%3d",31) → 「△31
printf("%03d",31) → 「031
printf("%1d",31) → 「31

%u

これは符号なしの整数に変換するフォーマット指定子です
ちなみに符号なし整数の宣言の型は
unsigned intとなります

%o

これは8進数の整数に変換するフォーマット指定子です
コード中に書く際、
数値の頭に0をつけるとその数は8進数リテラルとなります

%x

これは16進数の整数に変換するフォーマット指定子です
コード中に書く際、
数値の頭に0xをつけるとその数は16進数リテラルとなります

  • 16進数について

    0~9,a~f で16進数の一桁を表します

    • 0x223 = 16²×2 + 16¹×2 + 16⁰×3 = 547
    • 0x2a3d = 16³×2 + 16²×10 + 16¹×3 + 16⁰×13 = 10813

※ a~f を A~F で表しても構いませんが
 その際は %x も 大文字の %X で表さないといけません

%f

これは小数に変換するフォーマット指定子です
float型double型 の値に対応しています

printf時のモディファイア:
モディファイアが小数点のような形となります

  • 整数部分は、
    小数点を含めた全体の表示する最小幅(%dのモディファイアと同じ働き)
  • 小数部分は
    小数部分の桁数を表します

printf("%5.3f",1.41421356) → 「1.414
printf("%4.3f",1.41421356) → 「1.414
printf("%06.3f",1.41421356) → 「01.414
printf("%11.8f",1.41421356) → 「△1.41421356
printf("%11.7f",1.41421356) → 「△△1.4142135

%lf

これは小数に変換するフォーマット指定子です
printf関数で使う際は%fと同じ扱いを受けます

%c

これは文字に変換するフォーマット指定子です

まずこちらの式が成り立つのは当たり前ですが
printf("%c",'a') → 「a
ここで少しおもしろい話があります

コンピュータは数値しか記憶できません
そのためC言語における文字には、それぞれ対応する数値が定められているのです
そしてこの数値のことを、文字定数 といいます

数値の63は文字定数として文字の?を表すので…
printf("%c",63) → 「?
となります

また、char型の変数は文字を入れるとその文字定数を記憶するものなので、

char num = 'a';
printf("%c",num);

→ 「a

これも成り立つのです

%s

これは文字列に変換するフォーマット指定子です
これが成り立つのは当たり前ですね
printf("%s","aab") → 「aab

char a[4] = {'a','a','b','\0'};
printf("%s",a);

→ 「aab
こちらも成り立ちます
aの要素数が4になっているのはヌル文字「\0」を確保するためです

printf時のモディファイア:
.がつくモディファイアです(つかなくてもよい)
.前の数字は%dと同じの最小幅、
.後の数字はその文字列の先頭から何文字を表示するかを表します
printf("%2s","aab") → 「aab
printf("%3.2s","aab") → 「△aa

%p

これはポインタ変数に対応したフォーマット指定子です
記憶したアドレスを表示します

int a = 10;
int *b;
b = &a;
printf("%p",b);

→ 「000000000014FEEC」(この値は環境ごとに変わります)

注意点

モディファイアの先頭に-がつくときがあります
そのとき、最小幅に影響は与えませんが
数値を左に詰めることになります
printf("%-3d",31) → 「31△
printf("%-11.7f",1.41421356) → 「1.4142135△△
printf("%-3.2s","aab") → 「aa△

さいごに

ここまで読んでくださりありがとうございました
「これをすべて覚えたらプログラミング能力認定試験3級のフォーマット指定子の範囲は完璧!」ということはありませんのでご注意ください
参考にしていただけると幸いです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?