ところで今まで書いたプログラムは全て「文字列」でしたね。
なので今回は数値の表示を主に扱ってみたいと思います。
ちなみに今回はちょっと長いです。
文字列リテラル
さて、まずはちょっと前回を思い出してみようと思います。
「""(ダブルクォーテーション)の間に書かれた文字を文字列」といいましたね。
だからprintf関数を使うと
printf("あいうえお¥n");
という風に書きました。ちなみに「¥n」は覚えてますか?「改行文字」でしたね。
この「""で囲んだ文字列」を「文字列リテラル」といいます。名前くらいは覚えておきましょう。
さて、ここで覚えておいて欲しいことは文字や数字を「""で囲んだ場合、必ず文字列として扱われる」ということです。
"1000"
というのはつまり、単なる数字(文字列)として扱われます。
このことを覚えておいて次へ進みます。
数字と数
さてちょっと質問です。
「数字」とは何でしょうか?
基本的には数を表す文字(記号)ですよね。
人間が数を見て表現できるようにした文字を表します。
逆に言えば数字がないと数を表現できないとも言えるかもしれません。
では「数」とはなんですか??
ちなみに数をコンピュータなどでは「数値」と言うのが一般的です。
さあ、これはちょっと難しいですね。
簡単に言えば数量を表す1つの概念、ですかね。「数の概念」なんて言葉もあります。
正直私も説明に困ってしまいます。
難しいのでこの辺にしておきますが、覚えておいて欲しいのは
「数字と数は厳密にいうと違う」ということです。
ではコンピュータの場合はどうでしょう。数(数値)と数字は違うのか??
答えは「違う」です。
先ほど「""で囲んだ場合、必ず文字列として扱われる」といいましたね。
つまりC言語はコンピュータ上で「""で囲まれた数」を数字(文字列)で表現(出力)します。
逆に、単に
1000
と書いた場合は、「数値」として扱われるのです。
そしてここからが大事なんですが、
コンピュータでは数値は計算できるのですが数字は計算できません。文字列としてそのまま表示してしまうからです。
つまり、たとえ数式を""の間に書いたとしてもコンピュータは「式」としては扱わず
式自体を文字列としてそのまま表示してしまうということです。
以下のプログラムを書いて実行してみましょう。
#include <stdio.h>
int main(void)
{
printf("1 + 2 = 3¥n");
return 0;
}
実行結果
1 + 2 = 3
こんな風に""で囲まれた数字も文字列としてそのまま表示してしまうんですね。
ではコンピュータに数値として扱わせて
計算して表示させるにはどうしたら言いのでしょうか??
変換指定
printf関数で数値を表示するためにはどうしたらいいのか??
「""で囲んだ場合、文字列として表示される」わけですから
「""で囲まなければいい」ということになりますね。
簡単に言えば
"1000"は数字
1000は数値
です。
でも、""で囲まないと画面に表示はされないんですよね??
ということは単に""で囲むだけでは文字列と認識されて不十分となるわけです。
つまり、数値を表示するには何かを数値と変換させて「数字として読み込ませる」必要があるわけです。
そこで必要になる何かが「出力変換指定子」というやつです。
文字列に書き込み、数値を数字(文字列)へ変換してくださいという命令をしてくれるわけです。
これも色々種類がありますが、整数値を変換してくれる「%d指定子」が有名ですね。
では早速やってみましょう。
適当な数値を画面へ表示してみます。999でやってみます。
#include <stdio.h>
int main(void)
{
printf("%d¥n", 999);
return 0;
}
実行結果
999
こんな風に使います。
「%d」が先に来て、後で「,(コンマ)」で区切って数値を指定します。
ちなみに「%d」は「整数値」を「10進数」として変換・出力します。
まあ、他にもあるということです。2進数や16進数などは後々説明していきます。
ではこれでは芸が無いのでついでに先ほどの「1 + 2」を計算させて答えを表示させてみましょう。
書き方は
#include <stdio.h>
int main(void)
{
printf("%d¥n", 1 + 2);
return 0;
}
実行結果
3
こんな風に「,(コンマ)」で区切って同じように式を書きます。計算して表示してくれるというわけです。
とりあえず足し算させてみました。
文字列と組み合わせて使う
%d指定子は文字列と組み合わせて使えます。
文字列の中に%d指定子を組み込むと%d指定子だけ数値を変換してくれるんです。
例えば
#include <stdio.h>
int main(void)
{
printf("1と2を足した和は%dです。¥n", 1 + 2);
return 0;
}
という風にやってみましょう。
実行結果
1と2を足した和は3です。
こんな風に文字列に組み込むことが出来るんです。
あくまで文字列に組み込むことが出来るということです。
%d指定子の複数使用
最後に%d指定子を複数使用してみましょう。
文字列にならどんなところに何度でも使用できます。
例として
#include <stdio.h>
int main(void)
{
printf("1と2を足した和は%dです。¥n", 1 + 2);
return 0;
}
の1と2にも%d指定子を指定して表示してみましょう。
どうするのがいいでしょうか。??
例えば
#include <stdio.h>
int main(void)
{
printf("%dと", 1);
printf("%dを足した和は", 2);
printf("%dです。¥n", 1 + 2);
return 0;
}
実行結果
1と2を足した和は3です。
なんて分けてやるとprintf関数を3回も使用するので面倒ですよね。
プログラムと結果も少し結びつきづらいですし。
なのでprintf関数は一回だけ使用して書いて見ましょう。
どうやって書くかはとりあえず見てみましょう。
#include <stdio.h>
int main(void)
{
printf("%dと%dを足した和は%dです。¥n", 1, 2, 1 + 2);
return 0;
}
実行結果
1と2を足した和は3です。
%dは一回のprintf関数呼び出しでどこに組み込んでも大丈夫ですが
数値の読み込みは「左から右」という文を読む順序で%d1つに対して1つの数値を読み込みます。
つまり、「,」で区切ったあと、「, 1, 2, 1 + 2」の順序を「, 2, 1, 1 + 2」に変えてしまうと実行結果も同様に
2と1を足した和は3です。
と変わるということです。これは大事なので覚えておきましょう。
メニューへ戻る
タグ:C言語
↓もしこの記事が役に立ったらクリックお願いします。


【プログラミング>C言語の最新記事】